x86汇编语言 从实模式到包含模式-汇总笔记

1、寄存器

在这里插入图片描述
IP寄存器初始值为0xFFFF,其他寄存器初始值都是0

2、内存

1M内存、BIOS、显存、引导扇区加载内容等,按比例显示如下图
在这里插入图片描述

2M内存 = 2097152 ~= 200万个内存单元

2、指令

操作码 操作数 , ... , 操作数

近代,多数处理器使用两个操作数的指令(二地址指令):

操作码 目的操作数 , 源操作数

div

1、16位二进制 / 8位二进制 , 被除数必须在AX中,运算后的商放在AL,余数放在AH
在这里插入图片描述

2、32位二进制 / 16位二进制 ,被除数的高16位放在DX ,低16位放AX中,运算后的商放在AX,余数放在DX
在这里插入图片描述

sub

格式:sub opd,ops
功能:(opd)-(ops) -> opd

cmp

功能上与sub相同,不同的是cmp仅仅根据计算结果设置相应的标志位,不保留计算结果。

in

从dx指定的端口号,读入数据放入al或ax中。

in指令的目的操作数必须是寄存器al 或者 ax,源操作数必须是寄存器dx(存放端口号)。

in指令不允许使用别的通用寄存器作为操作数,也不允许使用内存单元作为操作数。

in al ,dxin ax,dx

立即数指定端口

in al ,0xf0in ax,0x03

in指令不影响任何标志位

out

与in指令相反,从al或ax中读入数据,输出到dx指定的端口号

out dx,alout dx,ax

立即数指定端口

out 0xf0,alout 0x03,ax

out指令不影响任何标志位

3、寻址方式

7种寻址方式:1、立即数寻址;2、

NO.寻址方式
1立即操作数是个立即数
mov al , 5
mov ax , 0x3064
2寄存器操作数在 “通用寄存器”
mov ax , bx
3直接直接指定操作数的偏移地址(有效地址EA)
mov ax , [0x2000]
mov ax , label_1 或者 mov ax , [label_1]
使用跨越前缀
mov ax , [es:label_1]
4⭐️寄存器直接寄存器中直接指定操作数的偏移地址
- 操作数的偏移地址在 “基址寄存器” BX、BP或 “变址寄存器” SI、DI 中,
BX、SI、DI 使用DS作为段寄存器 , BP使用SS作为段寄存器
mov ax , [bx] ;物理地址 = 16*(DS)+(BX)
mov ax , [si] ;物理地址 = 16*(DS)+(SI)
mov ax , [di] ;物理地址 = 16*(DS)+(DI)
mov ax , [bp] ;物理地址 = 16*(SS)+(BP)
使用超越前缀
mov ax , [cs:bx] 或 mov ax , [es:bx] 或 mov ax , [ss:bx]
5寄存器相对寄存器直接基础上,附加立即数偏移量
mov ax , [bx+1]
6基址变址操作数的偏移地址是一个基址寄存器(BX,BP)和一个变址寄存器(SI、DI)的内容和
mov ax , [bx+si]
mov ax , [bx+di]
mov ax , [cs:bx+si]
mov ax , [cs:bx+di]
7相对基址变址

除了1、2,其他寻址方式的操作数都在除代码段以外的存储区

立即数、寄存器、直接、寄存器直接、寄存器相对、基址变址、相对基址变址

4、加载程序

5、硬盘控制器端口

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java硕哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值