汇编语言中,如何将一个单元的内容取反
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言中,如何将一个单元的内容取反相关的知识,希望对你有一定的参考价值。
参考技术A 方法1.用逻辑非运算指令(not指令,指令格式:NOTOPRD),可以对目标操作数的二进制全部位取反,比如取反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 的指向将内存做为不同用处
以上是关于汇编语言中,如何将一个单元的内容取反的主要内容,如果未能解决你的问题,请参考以下文章