初学汇编,请高手帮我看下这个汇编习题

来源:百度知道 编辑:UC知道 时间:2024/05/09 12:30:28
若DX与AX中放了一个有符号的双字型数据,DX是高位,AX是低位,编写程序段求其绝对值

如果是正数,那么绝对值就是它本身;如果是负数,那么绝对值就是用0减去这个数:
cseg segment
assume cs:cseg
begin:
mov dx,0ffffH
mov ax,0ffffH ;设这个数是-1(补码是0FFFFFFFFH)
xor cx,cx ;cx清零,用cx减去负数
and dx,dx ;用高位DX影响标志,判断是正是负
jns stop ;如果是正数,则转到结束
sub cx,ax ;没有转移,是负数,用0减,先减低位
mov ax,cx ;减后的结果送回ax
mov cx,0 ;cx重新清零
sbb cx,dx ;带借位减dx
mov dx,cx ;回送结果
stop: mov ah,4ch ;程序结束
int 21h
cseg ends
end begin
初学汇编嘛,我给你加的注释比较详细,要是还有不明白的地方再补充问题,讨论一下吧。
祝学习顺利哦