注:根据王爽《汇编语言》(第三版)内容,主要防忘记和方便查找
一、基础知识 略
二、寄存器
****8086CPU所有寄存器都是16字节
****AX,BX,CX,DX为通用寄存器,且都可以分为两个独立的8位寄存器独立使用
****AX->AH和AL,BX,CX,DX同理
****字节byte,8位;字word,16位,即2字节
注意数字的后缀,没有后缀默认为十进制,后缀为h是16进制,b则为二进制,后缀不区分大小写
8086CPU寻址 :物理地址=段地址乘16再加偏移地址
16进制表示如下
只有4个段寄存器可用来提供段地址:CS DS SS ES
CS和IP指示了当前要读取指令的地址
即8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行
修改CS IP不可用mov之类的指令,可用jmp指令
三、内存访问
内存中,一个地址是一个存储单元,一字节
采用小端法存储,即字型数据(word两字节)高位字节存储于高地址单元,地位字节存储于低地址单元。如图从0地址开始存放20000(4E20H)和18(0012H)
注:地址从0开始增长,因此1相对于0为高地址,后面同理。
DS段寄存器,用来存放要访问数据的段地址
比如下图用来读取10000H单元内容
注:不能直接将数据送入寄存器,只能通过 mov 段寄存器,寄存器
注:[…]表示一个内存单元
mov合法操作如下:
栈
任意时刻,SS:SP指向栈顶元素,可以使用pop和push指令实现出栈和入栈操作
push ax
相当于
sp=sp-2
将ax中内容送入ss:sp所指内存处
pop ax
相当于
将ss:sp所指内存处数据送入ax中
sp=sp+2