汇编语言期末总结
基础知识
机器语言
汇编语言的本质可以看作计算机硬件的功能接口。
机器语言是机器指令的集合。
汇编语言的产生
汇编语言的主体是汇编指令。
汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
汇编指令的本质是机器指令的助记符。
1 | 机器指令:1000100111011000 |
指令执行: 汇编指令->编译器->机器码->计算机
汇编语言的组成
- 汇编指令(机器码的助记符,有对应的机器码)
- 伪指令(没有对应机器码,由编译器执行,计算机不执行)
- 其他符号(如+、-、*、/等,由编译器识别)
指令和数据
在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
存储单元
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;
CPU对存储器的读写
CPU进行数据读写的信息交互:
- 存储单元的地址(地址信息)
- 器件的选择,读或写命令(控制信息)
- 读或写的数据(数据信息)
地址总线
CPU是通过地址总线来指定存储单元的。
地址空间的宽度N决定了寻址空间的大小。
数据总线
数据总线的宽度决定了CPU和外界的数据传送速度。
控制总线
控制总线的宽度决定了CPU对外部器件的控制能力。
内存地址空间
- RAM(随机存储器)
- ROM(只读存储器)
将各类存储器看作一个逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。
寄存器
程序员通过改变寄存器中的内容来实现对CPU的控制,寄存器的功能:进行信息存储,暂存指令、数据、地址。
8086CPU中有14个寄存器,每个寄存器有16位,可以存放两个字节。
- **数据寄存器:**AX、BX、CX、DX
- **地址寄存器:**SI、DI、SP、BP
- **段寄存器:**CS、SS、DE、ES
- **控制寄存器:**IP、PSW
通用寄存器(数据寄存器)
4个通用寄存器都可以分为两个独立的8位寄存器:
- AX:AH(高8位)、AL(低8位)
- BX:BH、BL
- CX:CH、CL
- DX:DH、DL
一个N位寄存器所能存储的数据的最大值是
字在存储器中的存储
一个字占2个字节,有16位。
0100111000100000 可表示为 4E20H (Hexadecimal,十六进制数据后面加H)
汇编指令举例
mov ax, 62627 | AX = F4A3H |
---|---|
mov ah, 31H | AX = 31A3H |
mov al, 23H | AX = 3123H |
add ax, ax | AX = 6246H |
mov bx, 826CH | BX = 826CH |
mov cx, ax | CX = 6246H |
mov ax, bx | AX = 826CH |
add ax, bx | AX = 04D8H |
mov al, bh | AX = 0482H |
mov ah, bl | AX = 6C82H |
add ah, ah | AX = D882H |
add al, 6 | AX = D888H |
add al, al | AX = D810H |
mov ax, cx | AX = 6246H |
8086CPU给出物理地址的方法
8086CPU有20位地址总线,可传送20位地址,但是CPU内部却只有16位结构。
因此采用一种在内部用两个16位地址合成的方法形成一个20位的物理地址。
物理地址 = 段地址 X 16 + 偏移地址
内存并没有分段,段的划分是来自CPU的。
CPU可以用不同的段地址和偏移地址形成同一个物理地址。
例题
-
给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为**( 00010H )到( 10000FH )**。
偏移地址的范围为0~FFFFH,CPU的寻址范围 00010H + 偏移地址
-
有一数据存放在内存20000H单元中,先给定段地址为SA,若想用偏移地址寻到此单元。则SA满足的条件是:最小为( 1001H ),最大为( 2000H )。
段的起始地址要为16的倍数,当偏移地址最小时,段地址最大,反之亦然
CS和IP
CS:代码段寄存器
IP:指令段寄存器
CPU将CS:IP指向的内存单元中的内容看作指令
工作流程:
- 从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;
- IP = IP + 所读取指令的长度,从而指向下一条指令;
- 执行指令。 转到步骤 (1),重复这个过程。
mov指令被称为传送指令,无法修改CS、IP的值
8086CPU提供转移指令:
1 | jmp 段地址:偏移地址 |