-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 |