主题:请求支援(汇编)
学过汇编的帮下,我这个程序就是用来显示字符串的长度的,本来应该很简单,可是我调试过很长时间,都没有通过,编译是可以通过的,当我直接输入回车的时候就会报错,输入不超过10个字符的时候运行结果是正确的,输入超过10个字符的时候算出来的结果不对,在不改变我的思路的情况下帮我看下哪里有问题,谢谢!!
SSE SEGMENT STACK'S'
DW 60 DUP(?)
SSE ENDS
DATA SEGMENT
NUM DB 100,0,200 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME SS:SSE,DS:DATA,CS:CODE
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
;;;;;;;;;;;;;;;;;;;;;输入
MOV AH,0AH
LEA DX,NUM
MOV SI,DX
INT 21H
;;;;;;;;;;;;;;;;;;;;清屏
MOV AH,6
MOV AL,0
MOV BH,00001111B
MOV CX,0
MOV DH,24D
MOV DL,79D
INT 10H
;;;;;;;;;;;;;;;;;;;;;初始化光标
mov ah,2
mov BH,0
mov DH,0
mov DL,0
int 10H
XOR DI,DI
;;;;;;;;;;;;;;;;;;;;;运算
XOR AH,AH
MOV AL,[SI+1]
CMP AL,0
JZ BN
XOR CX,CX
INC CX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BM: xor AH,AH
mov bl,0AH
div bl
CMP AL,0
JZ BN
INC CX
PUSH AX
MOV AL,AH
JMP BM
;;;;;;;;;;;;;;;;;;;;;;;显示
BN: PUSH AX
BW: POP DX
MOV DL,DH
OR DL,30H
MOV AH,2
INT 21H
;;;;;;;;;;;;;;;;;;;;;;;;;光标处理
INC DI
MOV DX,DI
MOV AH,2
MOV BH,0
INT 10H
LOOP BW
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;查看结果
MOV AH,1
INT 21H
MOV AX,4C00H
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
(上面的程序用于工作在实模式下)
SSE SEGMENT STACK'S'
DW 60 DUP(?)
SSE ENDS
DATA SEGMENT
NUM DB 100,0,200 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME SS:SSE,DS:DATA,CS:CODE
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
;;;;;;;;;;;;;;;;;;;;;输入
MOV AH,0AH
LEA DX,NUM
MOV SI,DX
INT 21H
;;;;;;;;;;;;;;;;;;;;清屏
MOV AH,6
MOV AL,0
MOV BH,00001111B
MOV CX,0
MOV DH,24D
MOV DL,79D
INT 10H
;;;;;;;;;;;;;;;;;;;;;初始化光标
mov ah,2
mov BH,0
mov DH,0
mov DL,0
int 10H
XOR DI,DI
;;;;;;;;;;;;;;;;;;;;;运算
XOR AH,AH
MOV AL,[SI+1]
CMP AL,0
JZ BN
XOR CX,CX
INC CX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BM: xor AH,AH
mov bl,0AH
div bl
CMP AL,0
JZ BN
INC CX
PUSH AX
MOV AL,AH
JMP BM
;;;;;;;;;;;;;;;;;;;;;;;显示
BN: PUSH AX
BW: POP DX
MOV DL,DH
OR DL,30H
MOV AH,2
INT 21H
;;;;;;;;;;;;;;;;;;;;;;;;;光标处理
INC DI
MOV DX,DI
MOV AH,2
MOV BH,0
INT 10H
LOOP BW
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;查看结果
MOV AH,1
INT 21H
MOV AX,4C00H
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
(上面的程序用于工作在实模式下)