检测点14.2
编程:用加法和移位指令计算(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不是向左移一位的意思吗?为什么这里移了那么多位. 还有我数学不好,谁能解释下上面写的是什么意思 左移一位相当于*2,所以ax*10=ax*8+ax*2,其中ax*8=ax*2*2*2(就是左移3次),以上都是在没溢出的时候才成立 ascxyh009 发表于 2011-11-10 13:16 static/image/common/back.gif
左移一位相当于*2,所以ax*10=ax*8+ax*2,其中ax*8=ax*2*2*2(就是左移3次),以上都是在没溢出的时候才成立 ...
N进制左移一位相当于*N,二进制你可以用上面的表示,但是汇编语言都是16进制的
额*10是对十进制来说的,计算机是2进制,移一位相当于*2而已
页:
[1]