主题:右移除2
永远精湛
[专家分:1440] 发布于 2007-12-27 22:55:00
我知道逻辑右移能实现除2,不知道算术右移能实现除2功能吗?
回复列表 (共4个回复)
沙发
def [专家分:3380] 发布于 2007-12-29 20:11:00
能,如果不相信请拿这个程序去debug
只要0-15位中14位和15位(符号)是一样的,sal ax,1就没问题
;==========================================================
;程序头 - 64k主程序
.286
assume cs: code
STACKSIZE equ 1024
ENTRYPOINT equ start
code segment para public
;=========================================================
;证明算术左右移
;
start:
mov ax,46
sal ax,1
mov ax,-46
sar ax,1
neg ax
mov ax,-46
sal ax,1
neg ax
mov ax,46
sar ax,1
mov ax,4c00h
int 21h
;===========================================================
;程序尾 - 64k主程序
code ends
stack segment stack
db STACKSIZE dup (?)
stack ends
end ENTRYPOINT
;===========================================================
板凳
lstzixing [专家分:30] 发布于 2007-12-30 11:55:00
无符号数的话是可以,但如果是有符号数?
比如:1111 1110
3 楼
def [专家分:3380] 发布于 2007-12-31 20:44:00
应该可以,debug一下就知道了.
4 楼
def [专家分:3380] 发布于 2007-12-31 20:45:00
neg ax表示把ax里的负数变为正数
我来回复