NEG BYTE PTR[DI]什么意思
发布网友
发布时间:2022-04-29 21:16
我来回答
共1个回答
热心网友
时间:2022-06-23 00:11
NEG是取补指令,就是对一个数求补,你这个指令采用寄存器间接寻址的方式,目的是把地址是DI的低八位内容取补,取补之后内容留在原地址,也就是DI表示的地址里面,下面是一个简单的程序,可以直接拿去测试一下(已编译通过):
data segment
a dw 0014h
data ends
code segment
assume cs:code,ds:data
main: mov ax,data
mov ds,ax
mov di,a;此步执行之后可以查看一下0014号地址的内容
mov al,byte ptr[di];把0014号地址单元的值中的低八位内容赋给AL
neg byte ptr[di];对0014号中的低八位内容取补
mov bl,byte ptr[di];把取补之后的内容赋给BL,可以对比一下al跟bl的值,看有啥不同
mov ax,4c00h
int 21h
code ends
end main
这个程序首先把地址0014赋给DI,然后将0014号的低八位内容取补,比如在我的机器0014号的低八位内容是D8,求补后就变成28.,程序运行后AL=14D8,BL=1428,那个14可以不必管他,不同机器有不同的值的,只要对比一下后两位的内容就行,不知可以明白否?
再举个例子说明一下求补(以下数据均为16进制):
D8求补之后是28 28+D8=100
14求补之后是EC EC+14=100
1234求补之后是EDCC EDCC+1234=10000
FFFF求补之后是0001 FFFF+0001=10000
1111求补之后是EEEF 1111+EEEF=10000
找出规律了吧?呵呵,你可以逐个测试一下