概念总结
一个段的起始地址必定是16的倍数
DB字节 占1个字节单元 读完一个偏移量+1
一个操作数为一个字节
DW单字 占2个字节单元 偏移量+2
一个操作数为一个字
DD双字 占4个 +4
DQ四字
DT十个字节👉用于形成BCD码
硬指令👉使CPU产生动作、并在程序执行时才处理的语句 如MOV
伪指令👉不产生动作 说明性语句 如变量定义 数据说明
保留字👉不能被随意使用的词👉MOV END OFFSET等
标识符👉变量 函数名等
AX累加寄存器👉Accumulator👉AHAL各8位
BX基地址寄存器👉Base
CX计数器寄存器👉Count
DX数据寄存器👉Data
SI源地址寄存器👉Source Index
DI目的变址寄存器👉Destination Index
SP堆栈指针寄存器👉Stack Pointer
BP基指针寄存器👉Base Pointer
(存放段首地址的段基值)
CS代码段寄存器👉Code Segment
DS数据段寄存器👉Data
SS堆栈段寄存器👉Stack
ES附加段寄存器👉Extra
🐸任何时刻 一个程序只能访问4个段的内容
🐸最大64KB/数据可以128KB(DS+ES)
IP👉Instruction Pointer 指令指针寄存器
FLAG👉标志寄存器
CF进位标志Carry
SF符号标志(正负)Symbol
ZF零标志Zero
OF溢出标志Overflow
AF溢出进位标志Adjust
PF奇偶标志(1的个数为偶数时置1)Parity
DF方向标志(1时高地址向低地址方向处理)
Direction
TF陷阱标志Trap
IF终端标志(1时允许相应中断请求)Interrupt
重要考点
-
代码格式
-
三种操作数
立即数👉数字文本表达式
寄存器操作数👉使用CPU内已命名的寄存器
内存操作数👉引用内存位置 -
ASCII码
0👉30H
A👉41H
a👉61H -
三种寻址方式👉针对操作数而言
1⃣️立即数寻址👉获得立即数
2⃣️寄存器寻址👉获得寄存器操作数
MOV AX,1234H
🐸目的操作数👉寄寻 / 源操作数👉立即寻
MOV BX,AX
🐸两个操作数均为寄存器寻址
3⃣️存储器寻址⚠️五种
🦊直接寻址👉指令中直接包含有效地址
MOV AX,[2000H]
🦊寄存器间接寻址👉地址存在SI/DI/BX
MOV AX,[EI]
🦊寄存器相对寻址👉BX/BP/SI/DI+位移量
MOV AX,[DI+06H]
MOV AX,[BP]👉+0H
🦊基址变址寻址👉BX/BP+SI/DI
BX👉默认段为DS
BP👉默认段为SS
🦊相对基址变址寻址👉 BX/BP+SI/DI+位移量
MOV AX,COUNT[BX][SI]等价于
MOV AX,[COUNT+BX+SI]
-
原码补码反码
无符号数👉正常操作
正数👉三个都为其本身
负数👉符号位为1不变 再操作 -
重点指令
1⃣️XCHG👉不允许立即数和段寄存器
2⃣️LEA👉源操作数的地址传给寄存器
3⃣️PTR👉伪指令👉用于临时指定类型
4⃣️运算指令
NEG👉用零减它👉求补码
CBW👉符号扩展👉字节扩展成字
CWD👉字扩展成双字
5⃣️分支循环指令
👉Above/Below/Greater/Less/Equal
6⃣️串操作指令
-
子程序
FAR CALL👉RETF -
问题
1⃣️何谓中断向量,何谓中断号?
中断向量即中断服务程序的入口地址。中断类型号是系统分配给每个中断源的代号。
2⃣️子程序调用时传递参数的三种基本方法是什么?
答:①通过寄存器传送。②通过堆栈传送。③通过变量传送。
3⃣️经典👉冒泡排序
4⃣️逆序输出字符串
std👉DF置1 开始倒过读入
cld👉DF置0 开始顺着输出
5⃣️加法溢出与减法溢出