. : : 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
[第8楼] [ 回复时间:2013-08-30 16:39 ] 
荣誉值:26
信誉值:0
注册日期:2013-07-15 09:25
根据检测点14.2的要求,用“加法”和“移位指令”计算(ax)=(ax)*10,

简单地用5个(ax)*2相加即可。乘法和循环,在这里没必要了。

assume cs:code
code segment

mov ax,1234h   ;为ax赋值                      
shl ax,1      ;移位得到(ax)*2 
mov bx,ax     ;转存1个(ax)*2于bx中
                                                
add ax,ax     ;得到2个(ax)*2相加
add ax,ax     ;得到4个(ax)*2相加
add ax,bx     ;得到5个(ax)*2相加
                                                
mov ax,4c00h
int 21h
code ends
end
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved