. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->端口
主题 : :  检测点14.2  [待解决] 回复[ 10次 ]   点击[ 1566次 ]  
masmaster
[帖 主] [ 发表时间:2010-06-22 18:39 ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
1 assume  cs:code
  2 code    segment
  3 start:
  4         mov ax,1234
  5         mov cl,2
  6         shl ax,1
  7         mov dx,ax
  8         shl ax,cl
  9         add ax,dx
 10 ;       mov ax,1234
 11 ;       mov bx,10
 12 ;       mul bx
 13         mov ah,4ch
 14         int 21h
 15 code    ends
 16         end     start
hky987654321
[第9楼] [ 回复时间:2013-08-30 21:28 ] 
荣誉值:26
信誉值:0
注册日期:2013-07-15 09:25
如果不是1234这种较小数,考虑CF问题,则多几行代码,但思路仍然是(ax)*10=(ax)*2*5即5个(ax)*2相加。

assume cs:code
code segment
mov ax,0ffffh   ;为ax赋值 
mov bx,5                            
sub dx,0        ;清0                

shl ax,1        ;移位后,ax存放(ax)*2的低16位
adc dx,0        ;取出CF,存放ax移位后的高16位。完成1次(ax)*2
push ax         ;低16位入栈
                                                
mov ax,dx       
mul bx          ;移位后的高16位乘5
mov cx,ax
pop ax
mul bx
add dx,cx       ;完成5个(ax)*2相加
                                                
mov ax,4c00h
int 21h
code ends
end
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved