汇编语言问题,代码如下,急
STACKS SEGMENT STACK
DW 128 DUP(?)
STACKS ENDS
DATAS SEGMENT
ARRAY DW 0001H,0002H,0003H,0004H,0005H,0006H,0007H,0008H,0009H,000AH
COUNT DW 1 DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
MOV DS,AX
MOV BX,0
MOV CX,10
MOV DX,7FFFH
AGAIN: MOV AX,ARRAY[BX]
TEST AX,0001H
JNZ COP
JMP NEXT
COP: CMP AX,DX(这里是想实现比较AX,DX的大小)
JL STO(如果AX<DX,执行STO,但是实现不了,所有的都是执行了STO?错在那里)?
STO: MOV DX,AX
NEXT: INC BX
INC BX
DEC CX
JNZ AGAIN
MOV AX,4C00H ;Í˳ö³ÌÐò
INT 21H
CODES ENDS
END START
顺便问以下,这句话错在那里?MOV AX,AX LT DX
追问:非常感谢,实在是刚刚入门,多多指教啊!顺便问以下,这句话错在那里?MOV AX,AX LT DX
LT的俩边有什么要求,不能是寄存器?是比较大小的操作符,*LT?意思是*小于?
答案:因为AX<DX则跳转到STO,不满足会执行JL STO的下一条指令,还是到STO,你可以在JL STO后,STO:以前加个JMP NEXT
其实最好是直接将JL STO改成JGE NEXT
如果以上还不能解决的话,那就是有正负符号的问题了,有符号数跟无符号数的比较跳转用的指令是不一样的。
上一个:使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试
下一个:汇编语言 dup(<'x','y',6,500>)什么意思啊