鱼C论坛

 找回密码
 立即注册
查看: 2698|回复: 3

检测点14.2

[复制链接]
发表于 2011-11-9 22:40:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编程:用加法和移位指令计算(ax)=(ax)*10
提示:(ax)*10=(ax)*2+(ax)*8
完整程序如下:

assume cs:code

code segment

start:

        mov ax,1000h

        mov bx,ax

        shl bx,1            ;(ax)=(ax)*2

        mov cl,3

        shl ax,cl           ;(ax)=(ax)*8

        add ax,bx           ;(ax)=(ax)*10



        mov ax,4c00h

        int 21h



code ends

end start
(ax)=(ax)*10不是向左移一位的意思吗?为什么这里移了那么多位. 还有我数学不好,谁能解释下上面写的是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-10 13:16:33 | 显示全部楼层
左移一位相当于*2,所以ax*10=ax*8+ax*2,其中ax*8=ax*2*2*2(就是左移3次),以上都是在没溢出的时候才成立
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-10 13:41:28 | 显示全部楼层

N进制左移一位相当于*N,二进制你可以用上面的表示,但是汇编语言都是16进制的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-17 02:04:46 | 显示全部楼层
额  *10是对十进制来说的,计算机是2进制,移一位相当于*2而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 22:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表