河北专接本微机原理编程题

设在相邻的两个字单元WORD1和WORD2中存有一带符号的双字长数据 abcd 9012

(a,b,c........分别表示任意的一位十六进制数)。搞一汇编语言程序,求出双字长数据的绝对值,存入字单元ABS1和ABS2

DATA1 SEGMENT 
WORD1 DW 9882
WORD2 DW abcd
ABS1  DW ?
ABS2  DW ?
DATA1 ENDS
 
CODE SEGMENT
	 ASSUME CS:CODE,DS:DATA1
	  
START:
      MOV AX,DATA1  
      MOV DS,AX
      
      MOV AX,WORD1;因为是要求绝对值,所以要判断是不是负数,用或指令
                  ;判断符号位是1还是0
      MOV DX,WORD2
      OR  DX,DX
      JNS  NEXT     ;SF不等于1跳,即正数
      NOT AX         ;给负数求绝对值就是按位取反,末尾加一
      NOT DX
      ADD AX 1
      ADC DX,0      ;ADC带进位的加法,你不知道,AX向DX有没有进位
                     ;所以DX+0+1  这是有进位 CF=1时
                     ; DX+0+0  这是没有进位
NEXT: 
      MOV ABS1,DX
      MOV ABS2,AX      
      
      MOV AH,4CH
      INT 21H
      CODE ENDS
           END START

中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值