上学期自学过汇编后,也没有什么经常使用的需求,不到一学期,很多知识就忘却了,只是记个大概,为了以后能快速回忆以前学习的汇编知识,所以写这个来一点点积累平时学到的汇编基础知识点。
可以说有多少种不同内核的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。
持续更新中……