试编写一个程序,实现对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 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值