;
以下面形式定义一个长整数,其所占用字节数由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
;
NDB $-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
NDB $-NUM
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOPLABEL 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
推荐阅读
- 汇编语言(3) 条件处理
- 汇编语言(4)整数运算
- 汇编语言(5)--高级过程
- ARM|GNU ARM中的汇编指令.word
- 本实验题目(将一个文件myprog.txt里面的内容中的小写字母全部转化为大写,其他字符保持不变,且不能使用临时文件。(对前面一道题目的改进版本))
- Link指向一个字线性表,其中的首单元保存线性表的长度,编制程序 ;将该线性表中内容为0FFFFH的项删除,并更新线性表长度 ;线性表长度是指线性表中实际
- Link指向一个字线性表,其中的首单元保存线性表的长度,编制程序将该线性表中内容为0FFFFH的项删除,并更新线性表长度
- 进制转化(从键盘接收一个4位的十进制数,将它转化为16进制并输出)