寄存器
历史
8086 --- 80286 --- 80386 --- Pentium
MS-DOS在实模式下运行(8086) , windows作为一个多任务系统,运行在80386的保护模式下,80386提供了虚拟8086模式,用于运行兼容8086处理器的程序。80286相比于80386微处理器,只提供了实模式和保护模式,没有虚拟8086模式。
8086架构
8086处理器是16位结构的CPU,一次可以存储一个字。一个字 = 2个字节 = 16 bit。
AX(accumulator)
,BX(base)
,CX(count)
,DX(data)
。CS:IP(Code segment:Instruction pointer)
寄存器的工作原理:段地址x16+偏移地址
;一条指令取址执行的大致流程内存中的字的存储:小端
DS(data segment)
寄存器和[address]- ds通常用于存放即将访问的数据的段地址;不允许通过立即数直接写入,不允许各种运算指令操作
SS:SP(Stack segment:Stack pointer)
寄存器用于维护一个栈指针。
基础指令
- 如何改变
CS/IP
寄存器的内容:jmp 寄存器
修改ip;jmp 段地址:偏移地址
同时修改CS,IP。
- 加减
add
,sub
;乘除mul
,div
。mul
:它是单操作符。它将两个数相乘,均为8位,或者均为16位:- 均为8位,则另一个操作数默认在
AL
中;结果默认放在AX
中; - 均为16位,则另一个默认在
AX
中,计算结果放在两个寄存器中,高8位在DX
中,低8位在AX
中。
- 均为8位,则另一个操作数默认在
- 栈操作
push
,pop
[address]
代表一个偏移地址,可以是一个立即数或者寄存器。loop
+cx
寄存器实现循环
MS-DOS环境的使用
- -r查看和修改寄存器
- -d查看内存
- -e修改内存
- -u查看内存,但是自动转换汇编
- -a修改内存,但是输入的是汇编
- -t执行一条
cs:ip
的指令