目录
前言
根据老师的PPT与IBM-PC汇编语言程序设计(第2版)而写,供考前突击所用。
基础知识
q 机器语言、汇编语言、高级程序语言 特性 比较
q 进位记数制与不同基数的数之间的转换
Ø 二进制、十六进制、十进制间的相互转换
q 二进制数和十六进制数运算
Ø 二进制间的加减运算、十六进制间的加减运算
q 计算机中数和字符的表示
Ø 数的补码表示、常用数字字母的 ASCII 码
q 几种基本的逻辑运算
Ø 与、或、非、异或的运算
这些已经掌握 。
机器语言、汇编语言、高级语言特点和区别_机器语言,汇编语言,高级语言各有什么特点-CSDN博客
汇编语言相关知识点
n 汇编语言是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的 低级语言 。
n 最快最有效 的计算机语言,能够 直接控制硬件 的唯一语言。
n 现在汇编语言已不像其他大多数的程序设计语言一样被广泛用于程序设计,在今天的实际应用中,它通常被应用在底层硬件操作和高要求的程序优化的场合。 驱动程序、嵌入式操作系统和实时运行程序都会需要汇编语言 。
n 汇编语言通过 汇编程序 转换成可执行的机器代码。
q80x86机采用目前最常用的美国信息交互标准代码ASCII来表示。这种代码用一个字节来表示一个字符,其中低7位为字符的ASCII值,最高位一般用作校验位。
80x86计算机组织
80x86微处理器
基于微处理器的计算机系统构成
硬件(CPU、MEMORY、I/O)软件
中央处理机(CPU)
Ø 通用寄存器 AX 、 BX 、 CX 、 DX 、 SP 、 BP 、 DI 、 SI
Ø 专用寄存器 IP 、 SP 、 FLAGS
Ø 条件码 OF 、 SF 、 ZF 、 CF 、 AF 、 PF 、 DF 、 TF 、 IF
Ø 段寄存器 CS 、 DS 、 SS 、 ES
通用寄存器
q 数据寄存器:用来存放计算过程中的操作数、结果或其他信息
n AX (accumulator) :累加器,算术运算的主要寄存器
n BX ( base ):在计算存储器地址时,被用作基址寄存器
n CX ( count ):常用来保存计数值
n DX ( data ):数据寄存器
n
q 指针或变址寄存器:在存储器寻址时,提供偏移地址
n SP ( stack pointer ):堆栈指针寄存器
n BP ( base pointer ):基址指针寄存器
n SI ( source index ):源变址寄存器,自动增减的功能
n DI ( destination index ):目的变址寄存器,自动增减的功能
专用寄存器
q IP ( instruction pointer ):指令指针寄存器,用来存放代码段中的偏移地址,计算机用 IP 寄存器控制指令序列执行流程
n
q FLAGS 为标志寄存器,又称程序状态寄存器( PSW )
这个SP课本在通用与专用寄存器中都有出现,不过功能一样,不再阐述。
条件码标志、控制标志、系统标志(在FLAGS标志寄存器中)
记住!!!期中要求默写。
DEBUG(8086)用符号显示以下8个标志位的值
OF 溢出(是、否) OV(是、标志为1)NV(否、标志为0)有N的就是否定的
(对应有符号数的溢出)
DF 方向(减量/增量)DN UP(down/up)用于串处理指令、DF=1,SI/DI-=1;DF=0,SI/DI+=1
IF 中断(允许/关闭)EI DI IF=1允许CPU响应可屏蔽中断请求
SF 符号(负/正)NG PL
ZF 零(是/否)ZR NZ
AF 辅助进位(是/否)AC NA 第三位(半个字节的最高有效位)是否产生进位值
产生的条件,即出现1+1=10......
PF 奇偶(偶/奇)PE PO
CF 进位(是/否)CY NC 最高有效位(D7\D15\D31,分别对应字节、字、双字)(D7对应从右面数第8个数)(对应无符号数的溢出)
TF没有,但我们知道TF=1,则开始调试。
段寄存器
q 专用于存储器寻址,用来直接或者间接地存放段地址
q
n CS ( code segment ):代码段
n
n DS ( data segment ):数据段
n
n SS ( stack segment ):堆栈段
n
n ES ( extra segment ):附加段
存储器
n 存储单元的地址和内容
q
q 在存储器里以字节为单位存储信息。每一个字节单元给以一个唯一的存储器地址,称为物理地址。地址从 0 开始,每次加 1 。地址为无符号整数,书写格式为十六进制数。
q
n 8086 地址总线为 20 位:地址范围 00000H-FFFFFH ;
n 80286 地址总线为 24 位:地址范围 000000H-FFFFFFH ;
n 80386 地址总线为 32 位:地址范围 00000000H-FFFFFFFFH ;
其他略。
80x86的寻址方式
n 有效地址= 基址+(变址 x 比例因子)+位移量
q
q 位移量:存放在指令中的一个 8 位或 16 位的数(地址)
q
q 基址( base ):存放在基址寄存器中的内容,通常用来指向数据段( DS )中数组或字符串的首地址
q
q 变址( index ):存放在变址寄存器中的内容,通常用来访问数组或字符串中的某个数据
q
q 比例因子: 386 及其后继机型中的术语,值为 1 、 2 、 4 、 8 ,通常用变址乘以比例因子来访问元素长度为 2,4,8 字节的数组
q
q 比例因子是固定值,其他三个成分可正可负,保证有效地址灵活
q 80x86 的寻址方式 ( 与数据有关的寻址方式 )
Ø 立即寻址方式 ← mov ax, 0001H
Ø 寄存器寻址方式 ← mov ax, bx
Ø 直接寻址方式 ← mov ax, ds:[00FFH]
Ø 寄存器间接寻址方式 ← mov ax,[bx]
Ø 寄存器相对寻址方式 ← mov ax, [bx+1]
Ø 基址变址寻址方式 ← mov ax,[ bx+si ]
Ø 相对基址变址寻址方式 ← mov ax, adrs [ bx+si ]
Ø 比例变址寻址方式 ← mov ax, [ esi *2]
Ø 基址 比例变址寻址方式 ← mov eax , [ ebx ][ esi *2 ]
Ø 相对基址比例变址寻址方式 ← mov array[ ebx ][ esi *2]
记忆方案:
以最后一个为例,array为位移量,对应命名为相对;ebx为基址寄存器,对应命名为基址;esi为变址寄存器,对应命名为变址;*2对应比例;每个结尾都叫寻址方式。所以是相对基址比例变址寻址方式 。 这就记住了后五个。
基址寻址方式,又分为直接寻址、寄存器间接寻址、寄存器相对寻址。这就记住了中间三个。
剩下两个就好记了。
q 80x86 的寻址方式 ( 与转移地址有关的寻址方式 )
Ø 段内直接寻址
Ø JMP Label; Label 的偏移量编入机器指令中
Ø 段内间接寻址
Ø JMP EBX ; EBX 寄存器的值送 EIP 寄存器
Ø JMP DWORD PTR [EBX]; 从 EBX 寄存器指向的存储器单元拷贝数据到 EIP
Ø 可使用除立即数寻址以外任意数据寻址方式
Ø 段间直接寻址
Ø JMP FAR PTR Label; Label 的段、偏移地址编入机器指令中
Ø 段间间接寻址
Ø JMP DWORD PTR [ADDR]; 内存中连续两个字数据给 IP 和 CS
Ø 可使用除立即数寻址和寄存器寻址以外任意数据寻址方式
汇编语言各种指令的解释与用法 - Sumarua - 博客园 (cnblogs.com)
8086汇编PTR的含义与用法 (十分全面详细)_8086ptr-CSDN博客
OPR是操作数,CNT是操作次数