我正在使用打印偶数和奇数的程序,但它不起作用 我的代码出了什么问题?因为我是汇编语言的新手
这是我的主要功能:
.data
S BYTE ?
.code
main proc
call ven
MOV AH,4ch
INT 21h
main endp
这是我的程序:
ven proc
MOV S,0 \\ S is a variable
L1:
JE ter
MOV AX,S
MOV bl,2
DIV bl
CMP AH,0
JE EVE
JNE ODD
EVE:
MOV AH,2
MOV DL,AL
INT 21h
jmp L1
ODD:
MOV AH,2
MOV DL,AL
INT 21h
jmp L1
ter:
RET
ven ENDP
END MAIN
我的ven
程序是否存在某些问题,我将其与主要文件以错误方式链接。
答案 0 :(得分:1)
你的代码中有一些小错误,我修复它们并用箭头指出它们(◄■■■
):
.stack 100h ;◄■■■ PROCEDURES REQUIERE STACK.
.data
S dw ? ;◄■■■ DW, NOT BYTE, BECAUSE AX IS TYPE DW.
.code
main proc
call ven
;call outdec
MOV AH,4ch
INT 21h
main endp
ven proc
MOV S,0
L1:
INC S ;◄■■■ S+1
CMP S,20 ;◄■■■ IF S > 20...
JA ter ;◄■■■ ...JUMP TO TER.
MOV AX,S
MOV bl,2
DIV bl
CMP AH,0
JE EVE
JNE ODD
EVE:
MOV AH,2
MOV DL,AL ;◄■■■ HERE YOU PRINT "AL", BUT THE NUMBER
INT 21h ;◄■■■ TO PRINT IS "S". USE "CALL OUTDEC".
jmp L1
ODD:
MOV AH,2
MOV DL,AL ;◄■■■ HERE YOU PRINT "AL", BUT THE NUMBER
INT 21h ;◄■■■ TO PRINT IS "S". USE "CALL OUTDEC".
jmp L1
ter:
RET
ven ENDP
END MAIN