回 帖 发 新 帖 刷新版面

主题:右移除2

我知道逻辑右移能实现除2,不知道算术右移能实现除2功能吗?

回复列表 (共4个回复)

沙发

能,如果不相信请拿这个程序去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
;===========================================================

板凳


无符号数的话是可以,但如果是有符号数?
比如:1111 1110

3 楼

应该可以,debug一下就知道了.

4 楼

neg ax表示把ax里的负数变为正数

我来回复

您尚未登录,请登录后再回复。点此登录或注册