. : : 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
linyu0723
[第6楼] [ 回复时间:2013-06-22 23:50 ] 
荣誉值:0
信誉值:0
注册日期:2011-06-07 21:54
哎,这条指令是多余的,mov ax,dx   ;最终结果放入ax,改进一下程序:

 
assume  cs:code 
code    segment 
start: 
       mov dx,1234
       mov bx,dx
       mov cx,5    ;如果是dx*1000,cx改成500即可。
       mov ax,0    ;ax清0,相当于一个累加器。

       s:
       mov dx,bx   ;每执行一次loop前,dx恢复原值
       shl dx,1    ;dx*2
       add ax,dx   ;用ax累加dx*2的内容
       loop s
       
       mov ah,4ch 
       int 21h 

code    ends 
end     start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved