当前位置:编程学习 > 汇编语言 >>

汇编语言当AX=008FH的时候用CMP AL,0和JNL NEXT语句为什么不进行跳转?实在没分啊!帮帮忙!

这是一个求根号的程序 利用1+3+5+7+9=25=5^2这个原理,当求144以上时出错 CRLF MACRO MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H ENDM DATA SEGMENT DATA1 DB 'Input the number!','$' DATA2 DB 'The answer is:','$' MID DB -1 NUM DB 20 DB ? DB 20 DUP(?) TEN DB 10 RESULT DB 20 DUP(?) DATA ENDS STACK SEGMENT STA DW 256 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA DX,DATA1 ;显示输入数字 MOV AH,9 INT 21H LEA DX,NUM ;输入数字 MOV AH,10 INT 21H CRLF LEA BX,NUM MOV SI,0 MOV CX,0 ADD BX,02H BCD: SUB DS:[BX+SI],byte ptr 30H ;ASCII变非压缩BCD码 INC SI INC CX CMP DS:[BX+SI],byte ptr 0DH JNE BCD MOV SI,0 MOV AX,0 HEX: MUL TEN ADD AL,DS:[BX+SI] INC SI LOOP HEX LEA BX,MID MOV CX,0FFH NEXT: ADD DS:[BX],BYTE PTR 02H ;开方运算,结果送CX SUB AL,DS:[BX] INC CX CMP AL,0 JGE NEXT ;!!!就是这里!!! LEA DX,DATA2 ;显示结果 MOV AH,9 INT 21H MOV AL,CL MOV AH,0 LEA BX,RESULT MOV SI,0 ASCII: DIV TEN ;数字变ASCII码 ADD AH,30H MOV DS:[BX+SI],AH INC SI MOV AH,0 CMP AL,0 JG ASCII DISPLAY:MOV DL,DS:[BX+SI] MOV AH,2 INT 21H DEC SI CMP SI,0 JGE DISPLAY MOV AX,4C00H INT 21H CODE ENDS END START
追问:不能把8F当成无符号数看吗?它不是143吗?请问我怎么修改才能达到想要的结果呢?
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,