汇编基础
第一章:基础
1、地址总线
2、数据总线
3、控制总线
4、内存地址空间,地址空间分配
第二章:寄存器
cpu由寄存器,控制器,运算器登器件构成
a、通用寄存器 ax,bx,cx,dx
高地位(H,L) AH,AL ………………
* 汇编指令:汇编指令或寄存器名称书写不区分大小写
* 指令的两个操作对象的位数应当一致
16位机构cpu
* 运算器一次最多处理16位的数据
* 寄存器的最大宽度为16位
* 寄存器和运算器之间的通路为16位
对于16位的CPU,能一次性处理,传输、暂时存储16位的地址
段地址:分段管理内存 16位的8086CPU读写内存,拥有20位的地址总线如何达到1MB的寻址能力?
1、提供两个16位地址,一个称为段地址,,一个称为偏移地址
2、地址加法器将两个16位地址合成一个20位的物理地址
3、段地址 * 16 + 偏移地址
b、段寄存器 cs、 ss、 es、ds
cs:代码段寄存器; ip:指令指针寄存器
jmp 段地址:偏移地址 -- 同时修改cs,ip的内容
jmp 某一合法寄存器。 -- 使用寄存器的值修改ip,含义上类似, mov IP,ax;
1、短地址在8086CPU的段寄存器中存放.8086CPU要访问内存是,有段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址
2、CS存放指令的段地址,IP存放指令的偏移地址
windows下DEBUG命令
-a 以汇编指令的形式在内存中写入机器指令 例如:-a 1000:0 1000:0000 mov ax,1
-r 改变一个寄存器中的值。 例如: r ax 键盘点击ENTER
-t 执行一条或者多条指令
-e 改写内存中的内容 例如: -e 1000:0 b8 01 00 b9 00 02 01 c8
-u 查看机器码对应的汇编指令
-d 1000:0 查看内存中的内容。 -d 段地址:偏移地址
第三章
1、8086CPU内存地址由段地址和偏移地址构成,DS是段地址寄存器,同时注意
a、不能用mov操作段寄存器 b、[……]表示一个内存单元,其中数字表示内存单元的偏移地址 c、ds 存放数据段的地址
读取 写入
mov bx, 1000H mov bx, 1000H
mov ds, bx mov ds, bx
mov al, [0] mov [0],al
2、栈的操作
push ax 表示将寄存器ax中的数据送入栈中
pop ax 表示将栈顶取出的数据送入ax
* 8086cpu的入栈和出栈都是以字为单位进行的
* 8086cpu不保证我们对栈的操作是否超界。
8086cpu中,有两个寄存器SS 和SP,栈顶的段地址存放在ss中,偏移地址存放在sp中,任意时刻,SS:SP指向栈顶元素。
Push指令的执行步骤:1、SP=SP-2; 2、向SS:SP指向的字单元中送入数据
pop指令的执行步骤: 1、SS:SP指向的单元读取数据; 2、SP=SP+2
第四章 汇编程序编写
转载于:https://www.cnblogs.com/yimuren/p/4363609.html