汇编语言--第一章

第一章

8086的寄存器
从应用的角度来分,主要将寄存器分为透明寄存器和可编程寄存器
将供编程寄存器分为通用寄存器和专用寄存器

通用寄存器
8086处理器中有8个16位通用寄存器,分别是AX,BX,CX,DX,SI,DI,BP,SP
1.数据寄存器
AX,BX,CX,DX,每一个可以分为两部分,高字节和低字节部分,高H,低L。
2.变址寄存器
许多指令需要两个操作数,源操作数和目的操作数。
SI,DI是变址寄存器,常通过改变寄存器表达的地址指向数组元素,SI一般指源操作数,DI一般指向目的操作数
标志寄存器

标志寄存器 (flags)
用于反映指令执行结果或控制指令执行形式
1.状态标志–用来记录指令执行结果的辅助信息
六种状态标志从低位到高位分别是:
进位标志CF
奇偶标志PF
调整标志AF
零标志ZF
符号标志SF
溢出标志OF
2.控制标志–控制处理器执行指令的方式
方向标志位DF
中断允许标志IF
陷阱标志TF

指令指针寄存器
程序由指令组成,指令放在主存储器中。处理器需要一个专用寄存器表示将要执行的指令的位置,而这个存储地址主要保存在指针寄存器IP中。
IP是专用寄存器,具有自动增量的能力。
IP寄存器不能像通用寄存器那样直接复制修改。

段寄存器
遵循模块化程序设计思想,一个段安排一类的代码或者数据,程序员编写程序时,可以自然的把程序的各个部分放在相应的段中、
应用程序主要设计三个段:代码段(CS),数据段(DS),堆栈段(SS)附加段寄存器(ES)
代码段寄存器(CS)存放程序的指令序列,再加上指令指针寄存器IP指示偏移地址,处理器就利用CS:IP取得下一条要执行的指令。
数据段寄存器(DS)存放当前运行程序所用到的数据。同上,用DS:EA访问数据或操作数
堆栈段寄存器(SS)确定堆栈所在的主存区域。同上,用SS:SP操作堆栈中的数据。
附加段寄存器(ES)附加的数据段,也用于数据保存。

8086的存储器组织
低位存低位,高位存高位,这种存储形式又被称为小端方式
对于16位字长的8086来说,可以方便的表示16位存储器地址:编号为0000H-FFFFH。(216=164)
但8086有20条地址线,于是出现:段基地址:段内偏移地址 来表达一个具体的物理位置
段基地址:说明逻辑段在主存中的起始位置,简称段地址。为了能用16位寄存器表达段地址,规定逻辑地址必须是模16地址,格式xxxx0H。省略低四位的0,段地址就可以用16位数据表示。
段内偏移地址:说明主存单元距离段起始位置的偏移量,简称偏移地址。
每个存储单元都有一个唯一的20位地址,被称为该单元的物理地址或者绝对地址。
将逻辑地址中的段地址左移四位再加上偏移地址,就得到了二十位的绝对地址。
8086规定段地址低四位必须位0,但是并不要求每一段都是64KB,各段之间并不要求完全分开,两个逻辑段可以部分重合甚至完全重叠,但各段的内容是不允许发生冲突的。

8086的寻址方式
主存寻址方式
1.直接寻址方式
mov ax,[2000h]
2.寄存器间接寻址方式
mov ax,[si]
在这种寻址方式下,有效数据存放在寄存器中,8086中只能是基址寄存器BX或变址寄存器SI,DI中。默认段地址在DS段寄存器中。
3.寄存器相对寻址方式
mov ax,[di+06h]
4.基址变址寻址方式
mov ax,[bx+si]
有效地址EA=基址寄存器BX/BP+变址寄存器SI/DI。
5.相对基址变址寻址方式
mov ax,[bx+si+06h]
相对于上一种,只是增加了一个8/16位偏移量
6.立即数寻址方式
mov al,05h;
7.寄存器寻址方式
mov ax,1234h;
mov bx,ax;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值