试编写一个程序,实现对N字节的NUM的值求补(类似NEG的操作),并把求反后的值仍保存在NUM中。求补即是取反后加1

;以下面形式定义一个长整数,其所占用字节数由N得到,比如128位(16字节)
;的数57 46 35 24 13 DE 89 67 45 23 BC 9A 78 56 34 12H定义成:
;NUM DB 12H,34H,56H,78H,9AH,0BCH,23H,45H
;          DB 67H,89H,0DEH,13H,24H,35H,46H,57H
;N   DB $-NUM
;试编写一个程序,实现对N字节的NUM的值求补(类似NEG的操作),并把求反后的值
;仍保存在NUM中。求补即是取反后加1
DATA SEGMENT 
NUM DB 12H,34H,56H,78H,9AH,0BCH,23H,45H
          DB 67H,89H,0DEH,13H,24H,35H,46H,57H
N   DB $-NUM
DATA ENDS

STACK SEGMENT PARA STACK
      DW 128 DUP(?)
TOP   LABEL WORD
STACK ENDS

CODE SEGMENT
     ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
         MOV AX,DATA
MOV DS,AX
 
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
 
LEA SI,NUM
MOV CL,N
XOR CH,CH
 
STC               ;将进位标志CF=1,用于第一次最低位的加1
L1: MOV AL,[SI]
NOT AL
ADC AL,0          ;ADC操作会改变CF,以后取反后是否会加1根据实际数据不同
MOV [SI],AL
INC SI
LOOP L1
 
MOV AH,4CH
INT 21H
CODE ENDS 
MAIN ENDP
     END START
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值