汇编语言中,如何将一个单元的内容取反

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言中,如何将一个单元的内容取反相关的知识,希望对你有一定的参考价值。

参考技术A 方法1.用逻辑非运算指令(not指令,指令格式:NOT
OPRD),可以对目标操作数的二进制全部位取反,比如取反ax,则not
ax即可.
方法2.用异或逻辑(xor指令,指令格式:XOR
OPRD1,OPRD2,异或逻辑就是两个逻辑值不同则输出结果为真,相同则输出假).与非运算一般区别是:可用于对特定位取反.
把目标操作数(即要取反的对象)要取反的二进制位与1进行异或逻辑即可实现,比如对ax寄存器内容低8位取反则可以:xor
ax,00ff;实现.

汇编语言第三章总结

第三章中,我们从访问内存的角度了解学习几个寄存器

下面将知识点总结如下:

一、16位寄存器存储一个字,就要用高8位存放高位字节,低8位存放低位字节

技术分享图片

0为低地址单元,1为高地址单元,表示数据4E20H(20000),起始地址是0,即是0地址字单元

存储用两个单元,逆序存放,而存储字节只用一个单元

二、mov al,[0]  表示将内存单元内容存入寄存器,【】中的0表示偏移地址,DS寄存器,存放访问数据的段地址

用mov指令只能通过如

mov bx,1000

mov ds,bx

为DS寄存器赋值,8086CPU不支持将数据直接送入段寄存器的操作

mov [0],al  可以将数据从寄存器送入内存单元

mov 段寄存器,寄存器 / mov 寄存器,段寄存器  都可执行

mov 内存单元,段寄存器

mov 段寄存器,内存单元  都可执行

三、编程时可将一组内存单元用ds存放段地址从而定义为一个数据段,再用偏移地址访问具体单元

四、栈:最后进入这个空间的数据最先出去

入栈push 和出栈pop都是以为单位

栈顶的段地址存放在SS中,偏移地址存放在SP中,任意时刻SS:SP指向栈顶元素

push ax  1.SP=SP-2    2.将ax内容送入SS:SP指向的栈内存

pop ax    1..将SS:SP指向的栈内存送入ax  2.SP=SP+2

空栈时,SS:SP指向栈最底部单元下面的单元(最底部字单元偏移地址+2)

五、8086CPU没有寄存器检测越界

六、push和pop可以传送段寄存器或者内存单元,如:

push ds

pop [0]

段地址在指令执行时,从DS获得

七、push、pop等栈操作指令,修改的只是SP,即栈顶变化范围最大为0~FFFFH

八、可以将长度为N(N≤64KB)的一组地址连续,起始地址为16的倍数的内存单元定义为栈段,同时将SS:SP指向定义的栈段

九、1.代码段CS、IP   2.栈段SS、SP  3.数据段DS  的指向将内存做为不同用处

以上是关于汇编语言中,如何将一个单元的内容取反的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言MOV AX,NOT 0F0FH具体啥意思?

汇编语言-05[BX]和loop指令

汇编语言-05[BX]和loop指令

汇编neg指令?

汇编语言第三章总结

汇编语言中 LOAD与STORE有啥区别?