如何用汇编语言求AX中数的绝对值,并存AX中

 我来答
sd...2@sina.com
2017-01-04 · 超过66用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:49.9万
展开全部
你说一个思路,如果AX的最高位是0,则AX的内容就是它的绝对值,如果AX的最高位是1,那么就把AX按位取反,末尾+1,就得到了AX的绝对值
------Solutions------
so easy

code segment
assume cs:code
start: and ax,0111111111111111b
mov ah,4ch
int 21h
code ends
end start
------Solutions------
neg

------Solutions------
.
.
.
mov ax,8123H
test ax,8000h
jz eixt ;如果最高位为0则为正数,不处理
neg ax ;否则求补并存入原寄存器
exit:mov ah,4ch
int 21h
.
.
------Solutions------
;just this works
test ax,8000h
jz ok
neg ax
ok:...
------Solutions------
cwd
xor ax, dx
sub ax, dx
恐怕不少汇编水平不错的人都不知道,而C编译器通常却有最快答案
楼上几位用条件转移的就慢得多
------Solutions------
xiaott(我能睡觉吗)
第4句 neg ax 能否改为 jnz ax
neg我不知道是什么,好像是否定的意思
------Solutions------
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式