汇编基础知识总结
2017-04-30 02:22
344 查看
上学期自学过汇编后,也没有什么经常使用的需求,不到一学期,很多知识就忘却了,只是记个大概,为了以后能快速回忆以前学习的汇编知识,所以写这个来一点点积累平时学到的汇编基础知识点。
可以说有多少种不同内核的CPU,就有多少种汇编语言,当然,很多人学习汇编并不是真的要用汇编开发,而是更加了解自己的小伙伴(或者应付考试???),所以呢,出于这个目的,我总结的是针对于 16 位 CPU 的 masm 汇编。客观讲,虽然汇编与汇编之间有区别,但是他们都是万变不离其宗的,彼此相通,熟练掌握了一种汇编,就不怕搞不懂其他的了。
寄存器
寄存器按照功能的不同可分为
通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI)、
段寄存器(CS,DS,ES,SS)、
指令指针寄存器(IP)、
标志寄存器(FLAGS)。
详细请参考: 汇编寄存器
物理地址
PA=段地址x16+偏移量
有效地址
EA=段内偏移量
7 种寻址方式
立即寻址方式 Mov AL, 12H (12H 是一个立即数)
寄存器寻址方式
Mov B, BX (源操作数是寄存器)
Mov BX, B (目的操作数是寄存器)
Mov AX, BX (两者都是寄存器)
直接寻址方式(中括号中是地址)
Mov AX, [1234H] (默认是 DS)
Mov AX, ES:[1234H] (指定使用 ES)
寄存器间接寻址方式 Mov AX, [DI] (DI 是地址)
注意:操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定。若有效地址用SI、DI和BX来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS。
寄存器相对寻址方式 Mov AX,[SI + 123H] (寄存器 + 立即数)
基址加变址寻址方式 Mov AX, [AX + SI] (寄存器 + 寄存器)
相对基址加变址寻址方式 Mov AX, [BX + SI + 123H] (寄存器 + 寄存器 + 立即数)
16 位 CPU 内部有 20 根地址线,其编码区为:[00000H,FFFFFH],可直接访问的物理空间为 1 M。
持续更新中……
可以说有多少种不同内核的CPU,就有多少种汇编语言,当然,很多人学习汇编并不是真的要用汇编开发,而是更加了解自己的小伙伴(或者应付考试???),所以呢,出于这个目的,我总结的是针对于 16 位 CPU 的 masm 汇编。客观讲,虽然汇编与汇编之间有区别,但是他们都是万变不离其宗的,彼此相通,熟练掌握了一种汇编,就不怕搞不懂其他的了。
寄存器
寄存器按照功能的不同可分为
通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI)、
段寄存器(CS,DS,ES,SS)、
指令指针寄存器(IP)、
标志寄存器(FLAGS)。
详细请参考: 汇编寄存器
物理地址
PA=段地址x16+偏移量
有效地址
EA=段内偏移量
7 种寻址方式
立即寻址方式 Mov AL, 12H (12H 是一个立即数)
寄存器寻址方式
Mov B, BX (源操作数是寄存器)
Mov BX, B (目的操作数是寄存器)
Mov AX, BX (两者都是寄存器)
直接寻址方式(中括号中是地址)
Mov AX, [1234H] (默认是 DS)
Mov AX, ES:[1234H] (指定使用 ES)
寄存器间接寻址方式 Mov AX, [DI] (DI 是地址)
注意:操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定。若有效地址用SI、DI和BX来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS。
寄存器相对寻址方式 Mov AX,[SI + 123H] (寄存器 + 立即数)
基址加变址寻址方式 Mov AX, [AX + SI] (寄存器 + 寄存器)
相对基址加变址寻址方式 Mov AX, [BX + SI + 123H] (寄存器 + 寄存器 + 立即数)
16 位 CPU 内部有 20 根地址线,其编码区为:[00000H,FFFFFH],可直接访问的物理空间为 1 M。
持续更新中……
相关文章推荐