{全网最详细汇编指令}

您所在的位置:网站首页 汇编语言指令总结 {全网最详细汇编指令}

{全网最详细汇编指令}

2024-03-27 05:54| 来源: 网络整理| 查看: 265

汇编工具包提取:链接:https://pan.baidu.com/s/1gzzW96a1l4vjxY1H03X_Bw?pwd=8888  提取码:8888  --来自百度网盘超级会员V5的分享

数据传输指令 MOV(指令)XCHG(指令)XLAT(换码指令)PUSH、POP(堆栈指令)LEA(地址传送指令)LDS(地址传送指令)LES(地址传送指令)标志寄存器(SF,ZF,PF,CF,OF,AF,TF,IF,DF)标志寄存器传送指令(LAHF、SAHF、PUSHF、POPF)输入输出指令 (IN、OUT)

MOV指令 作用:把一个字或者直接的操作数从源地址传送到目的地址(简单理解为赋值)

-------------------------------------------------------------------------------------XCHG指令 作用:将一个字节或者自己的源操作数和目的操作数相交换(用来交换值)

 

--------------------------------------------------------------------------------------------------------------------------------

XLAT换码指令

作用:将bx指定的缓冲区、AL指定的位移处的一个字节数据取出赋值给AL

 

 

--------------------------------------------------------------------------------------------------------------------------------

 PUSH、POP堆栈指令 作用:将寄存器或者储存器中的数据按照堆栈操作的规则进行出入栈(将操作数压入压入栈和出栈)

 

--------------------------------------------------------------------------------------------------------------------------------

LEA地址传送指令 作用:将对应的地址表示送入对应的寄存器中

-------------------------------------------------------------------------------------------------------------------------------

 LDS地址传送指令

内存的值已经送到了DX那里,但是不太清楚DS的值为何从073F变到A73E的具体操作?

有意向的大佬,可以在评论区或者私信里讨论一下!

------------------------------------------------------------------------------------------------------------------------------

LES地址传送指令

内存的值已经送到了DX那里,但是不太清楚ES的值为何从073F变到A73E的具体操作?

有意向的大佬,可以在评论区或者私信里讨论一下

-------------------------------------------------------------------------------------------------------------------------------

标志寄存器汇总

 

标志位图解 下面这个图还有上面那张 是必须要知道的,不然后面的标志器地址传送指令一定会搞不懂,亲身经历啊!!!

 -------------------------------------------------------------------------------------------------------------------------------

1、SF:符号标志位,如果执行结果为负数,则SF=1,非负则SF=0

2、ZF:零标志位,如果执行结果为0,则ZF=1,否则ZF=0  

 3、PF:奇偶标志位,如果执行结果中所有二进制位中1的个数为偶数则PF=1,否则PF=0

提示:ax:00100010 bx:00000000 -> ax+bx=00100010 这里1的个数是2(偶数)

 4、CF:进/借位标志位,一般来说,在进行有符号的运算时,如果数据最高位产生了 有符号数的运算涉及符号的处理。进位或者借位CF=1,否则CF=0

提示:ffff由于最高位都是1,相加时会进位(这里的进位具体指的就是1+1)

 提示:借位的话,一般都是小数减大数的时候会发生。低位减的时候不够了,向高位去借位的情

 

5、OF:溢出标志位,运算结果超出了机器所能表示的范围称为溢出 无符号数的运算忽略了符号的处理,仅关注数值的大小8位有符号数,机器所能表示的范围是-128 - 127;16位有符号数,机器所能表示的范围是-32768-32767;(比较计算后的十进制数,即可)

大于时溢出

 小于时不溢出

在我用ffff加ffff或者其他字母加的时候,理论上大于了也会溢出,但是不知道为什么没有溢出?而我用数字相加的时候,只要超出范围就会溢出。知道的大佬可以一起讨论一下!(应该是没有超出无符号数的范围)   6、AF:辅助进位标志位,运算过程中看第三位,不论长度多少。如果最后四位向前有进位/借位,AF=1,否则AF=0;

11111111 这里是第三位有进位(进位就是1+1)

00001000

11111111 这里是:如果最后四位向前有进位/借位AF=1,否则AF=0;

10000001

7、TF:调试标志位,当TF=1时,处理器每次只执行一条指令,即单步执行;(这里具体指的就是我们单步调试的时候)

8、IF:中断允许标志位,用来控制8086CPU是否可以接受外部中断请求。IF=1,则能响应外部中断,否则屏蔽外部中断; 【这个默认就是有的(开启的) 通过上述的图片都可以看出来。主要是用在对外部设备进行汇编调试的时候】

9、DF:方向标志位,在串处理指令操作后控制DI、SI的增减,如果DF=0,则前述寄存器递增,否则递减,注意DF的值由程序员通过CLD(0)和STD(1)指令设定;(一般用在循环中)

-------------------------------------------------------------------------------------------------------------------------------

通过上述图片,记住-标志寄存器的低八位-和AX高8位(AH)

1、LAHF标志寄存器传送指令 

该复制的标志位复制上去,其余的不用动(按照这里,简单来说就是就是把3,5位置上的0照搬下来)

0000 0000

1101 0111

 D7:1101 0111

 2、SAHF标志寄存器传送指令

99H:1001 1001   并给到标志寄存器所对应位置上面

 3、PUSHF和POPF标志寄存器传送指令

先把标志寄存器设置好。

2D7的二进制数

0010 1101 0111

后面低8位原理向上面一样。第九位其实就是IF。最后,进栈再出栈

-------------------------------------------------------------------------------------------------------------------------------

输入输出指令 IN、OUT

这个其实就是根据外设的端口去获取一些外设的信息。我用DOSBOX可以成功。emu8086好像还要转ascill码,这个大家后续可以去研究一下。(端口很多,大家都可以去了解一下!)

BCD码

BCD码:主要是用一些二进制数进行拼接

 70H和71H解释

 获取当前日期的指令操做

原理:给al一个可以拿到外设日期的端口。然后放到70H中去访问。最后通过71H拿到数据

 原理

这就是通过地址总线寻址,然后通过数据总线传输,最后通过控制总写读取和写入

-------------------------------------------------------------------------------------------------------------------------------

补充 这里是拿2B(2字节数)举的例子 有符号数空间范围:-2^15到2^15 -1    (原因:正负各一半) 无符号数空间范围:0到2^16 -1     (原因:由于没有负数,所以不用分一半)

-------------------------------------------------------------------------------------------------------------------------------

总结:在这篇章节里,我自己也有一些不懂问题。大家看完之后,也可以在评论区或者私信我提出自己的问题或和思考。可以一起交流讨论一下!!!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3