试编写一个程序,实现对N字节的NUM的值求补,并把求补后的值仍保存在NUM中。

本文介绍了一段使用汇编语言实现的补码运算过程,包括取反和加一操作。通过对原始数据进行补码转换,实现了数值的负数表示。此程序首先将数据加载到寄存器中,然后逐个字节地进行取反操作,之后再逐个字节地进行加一操作以完成补码的计算。
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
      DW 10 DUP(?)
TOP LABEL WORD
STACK ENDS	  
CODE SEGMENT
   ASSUME CS:CODE,SS:STACK,DS:DATA 
MAIN PROC FAR
     MOV AX,STACK
	 MOV SS,AX
	 LEA SP,TOP
	 MOV AX,DATA 
	 MOV DS,AX 
	 MOV ES,AX 
	 LEA SI,NUM
	 LEA DI,NUM 
	 MOV CX,0 
	 MOV CL,N 
	 CLD 
  L1:LODSB 
     NOT AX 
	 STOSB
	 LOOP L1
	 LEA SI,NUM 
	 LEA DI,NUM 
	 MOV CX,0 
	 MOV CL,N
	 CLD 
	 STC 		;将进位标志CF=1,用于第一次最低位的加1  (补数=取反+1)
  L2:LODSB 
	 ADC AX,0
	 STOSB 
	 LOOP L2 
	 MOV AH,4CH
	 INT 21H 
MAIN ENDP 
CODE ENDS 
     END MAIN 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值