新手汇编,其中我想要把输入的数字再弄成字符串输出显示出来 弄了半天 就是出不来 没看出错误。请高手看看
谢谢!
代码:
DATA SEGMENT
DATA1 DB 10 DUP(?)
RESULT DB ?
MESS1 DB '请输入任意多个十进制无符号数,用英文逗号间隔,结束输入英文句号:',13,10,'$'
MESS2 DB 13,10,'其中奇数的个数为 : $'
MESS3 DB 13,10,'输入有误!请按照要求重新输入。$'
MESS4 DB 13,10,'您输入了$'
MESS5 DB '个数,分别为:$'
DATA ENDS
STACK SEGMENT
STA DB 1024 DUP(?)
TOP EQU $-STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV BH,0
MOV BL,0
MOV CX,0
LEA DX,MESS1
MOV AH,9
INT 21H
WW1: MOV AH,01H
INT 21H
PUSH AX
INC CX
CMP AL,2CH ;判断逗号
JZ DOUHAO
CMP AL,2EH ;判断句号
JZ JUHAO
CMP AL,30H ;判断数字
JAE SZ
JMP WRONG
SZ: CMP AL,39H ;判断数字
JBE WW1
JMP WRONG
DOUHAO: ADD BL,1
LEA SI,DATA1
POP [SI]
POP [SI+1]
MOV AL,[SI+1]
TEST AL,01H ;判断是否为奇数
PUSH [SI+1]
PUSH [SI]
JNZ LP1
JMP WW1
LP1: ADD BH,1
JMP WW1
JUHAO: ADD BL,1
LEA SI,DATA1
POP [SI]
POP [SI+1]
MOV AL,[SI+1]
TEST AL,01H ;判断是否为奇数
PUSH [SI+1]
PUSH [SI]
JNZ LP2
JMP SC
LP2: ADD BH,1
JMP SC
WRONG: LEA DX,MESS3
MOV AH,9
INT 21H
JMP START
SC: MOV [RESULT],BH
LEA DX,MESS4
MOV AH,9
INT 21H
MOV DL,BL
OR DL,30H
MOV AH,2
INT 21H
LEA DX,MESS5
MOV AH,9
INT 21H
LEA SI,DATA1
CZ: POP [SI]
INC SI
DEC CX
JCXZ CZ
MOV AL,'$'
MOV [SI],AL
MOV DX,DATA1
MOV AH,9
INT 21H
LEA DX,MESS2
MOV AH,9
INT 21H
MOV DL,BH
OR DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
追问:这里没有问题的。可以判断出去。
不能显示汉字。。那个不重要。。
图中圈出的代码去掉就可以正常运行 但是实现不了显示 输入的字符 这个功能
谢谢帮助恩 是那里错了 但是不止那里错。改过后输出不正确 但是不重要了。 想到了另外一个好办法
谢谢
答案:只看了上面一直在判断出不去 还有能显示汉字吗晕
CMP AL,2CH ;判断逗号
JZ DOUHAO
CMP AL,2EH ;判断句号
JZ JUHAO
CMP AL,30H ;判断数字
JAE SZ
JMP WRONG
SZ: CMP AL,39H ;判断数字
JBE WW1
JMP WRONG
上一个:求教汇编语言转换成C语言
下一个:在汇编语言中怎样实现两个数互换