汇编网首页登录博客注册
njutyangxiao的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  原泉混混,不舍昼夜。盈科而后进,放乎四海,有本着如是,是之取尔!
  • 『姓名』:杨逍
  • 『性别』:男『发送消息
  • 个人说明:
  • 详细信息『加为好友』
学习动态
最新留言

[2009-09-11 15:48] 检测点14.2

图片载入中
题目:编程,用加法和移位指令计算(ax)=(ax)*10。提示,(ax)*10=(ax)*2+(ax)*8

分析:这里要用到shl(shift logic left)逻辑左移,由于左移一位相当于原来的数乘以2,右移一位相当于原来的数除以2。所以(ax)*2 相当于ax左移一位,而(ax)*8相当于ax左移3位。

源代码如下

assume cs:codesg
codesg segment
    start:
    mov ax,4
    mov dx,ax
    shl dx,1;把dx中的内容(也就是ax中的内容)给左移一位
    mov cl,3;由于(ax*8)需要左移3位,把3放在了cl中
    shl ax,cl
    add ax,dx;最后把两者相加就得出了(ax)*10的值
    
    
    mov ax,4c00h
    int 21h
    
codesg ends
end start 

结果见上图
评论次数(2)  |  浏览次数(638)  |  类型(汇编作业) |  收藏此文  | 

[  wsrf   发表于  2009-09-16 08:08  ]

正确。

[  njutyangxiao   发表于  2009-09-16 09:05  ]

谢谢你的指导

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码