目录 上一页 下一页 下一章

-148- PC机汇编语言实战精解
























outchar
code

push
push
push

mov
mov
mov
mov
mul
mov
shl
mov
add

pop
rep

pop
pop
pop
pop
pop
ret
endp
ends
end
cx
dx
ax

ax,0b800h
es,ax
al,dh
bh,80
bh
di,ax
dl,1
dh,0
di,dx

ax
stosw

dx
cx
bx
di
es



main




;设置ES寄存器指向显示缓冲区

;字符所在行号送入AL寄存器

;计算"行号 80"
;"行号 80"的结果送入DI寄存器
;计算"列号 2"

;偏移量=行号 80+列号 2

;从堆栈中取出字符及属性
;送入显示缓冲区

;恢复寄存器




;返回



助记符:MUL(Multiple)
用 途:将两个数相乘
格 式:MUL 寄存器
    MUL 存储单元
执 行:指定寄存器或存储单元中的数据与累加器中的数据相乘,16位的结果
    保存在累加器AX中,32位的结果由DX寄存器与AX共同保存,AX保存结
    果的低16位,DX保存高16位。
  前面章节中提到过一些有关累加器AX的几个专门的用途,比如CPU与端口交换数据的专门通道;与"串指令"相配合时用作数据传输等等。这里又要学到累加器的一个特殊用途:使用乘法指令时累加器用于保存一个因数,因此"MUL"指令只有一个操作数。如果将这个操作数据看作是乘数,那么在使用"MUL"指令之前必须先将被乘数存入累加器AX中。
  乘法指令有一些重要的性质是需要记住的:
  ① 相乘的两个数位宽应该相等,8位数据只能与8位数据相乘,16位数据只能与16位数据相乘,而且相乘的两个数都被认为是无符号数;
  ② 如果进行8位数据的乘法,被乘数必须放入累加器的低8位AL中;
  ③ 两个8位数相乘结果是一个16位的数据,由AX寄存器保存。两个16位的数相乘结果是

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章