解释一下汇编语言这个程序

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:47:18
题目的要求是计算ffff:0006单元中的数乘以三
assume cs:code
code segment
mov ax,0ffffh
mov ds,ax
mov bx,6
mov al,[bx]
mov ah,0
mov dx,0
mov cx,3
s:add dx,ax
loop s
mov ax,4c00h
int 21h

code ends
end

其中,mov al,[bx]
mov ah,0
是什么意思,有什么作用,为什么要加上这个。
mov ax,4c00h的作用又是什么?
ds对应的是段地址,那偏移地址使用谁来放置?放置偏移地址只用能使用dx,设置循环数只能用cx吗?

mov al,[bx]
mov ah,0
是清空AX的高8位,因为在进行运算的时候是是以16位进行的,所以如果不把ah清空的话,会干扰结果

mov ax,4c00h
是int 21h的参数,其中4C是选择退出子功能,00是退出代码

在8086CPU中BX,SI,DI,BP都能放偏移地址并且用于寻址,DX不能用于寻址
其实所有的寄存器都能放地址,地址是个数罢了,放在那个寄存器里都可以,但寻址的时候(就是在内存中存取的时候)就只能用那几个寄存器了

如果是loop的话,只能用cx
但如果用其他的方式循环的话,就不用了,例子:
mov ax,3
s:
add dx,ax
dec ax ;ax中的数据减一
jnz s;如果上一条指令的结果不为0的话,就跳转到s