我在大学里上过汇编课,但对一些基本操作不太了解(一开始我错过了几节课)。
我有一个打印数字的简单程序,这是程序:
.model small
.stack 100h
.data
num dw -32768
numS db 6 dup(' '),'$'
.code
mov ax, @data
mov ds, ax
mov ax, num
mov bx, 10
mov si, offset numS+5
next:
cwd
idiv bx
cmp dx, 0
jge cont
neg dx
cont:
add dl, 48
mov [si], dl
dec si
cmp ax, 0
jz sof
jmp next
sof:
cmp num, 0
jge soff
mov byte ptr[si], '-'
soff:
mov ah, 9
mov dx, si
int 21h
.exit
end
我在其他网站上检查了cmp命令的功能,实际的算法是opr1-opr2 ...,因此在此程序中,我提醒了除法(放在dx中的ax / bx),并从中减零。 ?我不明白这里的比较是如何工作的..:/
请帮助我理解它,我是一个完整的初学者,并且被卡住了。
如果有人不介意总体上解释该程序,而将重点更多地放在比较上,那就太好了。
干杯
cmp
执行与执行的操作完全相同的操作sub
,但不会将结果保存到目标寄存器中。但是,就像一样sub
,它设置标志寄存器,该标志寄存器可以在后续的条件跳转操作中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句