【期末总结】汇编程序设计

概念总结

一个段的起始地址必定是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⃣️加法溢出与减法溢出
加法溢出
减法溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值