第一章 基础知识
- 机器语言 是 机器指令的集合
- 汇编语言的组成:
- 汇编指令:机器码的助记符,有对应机器码
- 伪指令:没有对应机器码,由编译器执行,计算机并不执行
- 其他符合:由编译器识别,没有对应的机器码
- CPU从单元中读取数据过程
- CPU通过地址线 将地址信息发出
- CPU通过控制线发出内存读命令
- 存储器将单元中的数据通过数据线送入CPU
- (写命令同理,控制线发出写命令)
- 地址总线的宽度决定了CPU的寻址能力
- 数据总线的宽度决定了CPU与其他器件传送时的一次数据传送量
- 控制总线的宽度决定了CPU对系统其他器件的控制能力(数量 功能等)
第二章 寄存器
第九章 转移指令的原理
转移指令的原理
转移分类
jmp dword ptr 内存单元地址
jmp far ptr 标号
jmp 16位寄存器 (寄存器内存有地址 高字位 cs 低字位 ip)
jmp word ptr 内存单元地址 (段内转移)
jmp short 标号 ;段内短转移 前128 后127
jmp near ptr 标号 ;段内近转移 16位 32768 32767
jcxz 标号
if ((cx)==0) jmp short 标号
loop 标号
(cx- -);
if ((cx)≠0) jmp short 标号
相关说明
转移是原理相对位移的编译成机器码后 机器码存储的是
目标地址 - 指令后的第一个字节的地址
其他
操作符 offset
取得标号的偏移地址
显存相关
- 内存地址空间中, B8000H ~B8FFFFH 共32k 空间
- 显示器显示25行 每行80个字符 每个字符256种属性2字节
- 显示缓冲区分为8页 每页4k 默认显示第0页
- 一个字符 低字节位存储 ASCLL码 高字节位存储属性
第十章 CALL和RET指令
RET
1 ret 近转移
相当于pop ip
2 retf 远转移
相当于pop ip
pop cs
CALL
1 call 标号 (根据位移转移)
相当于 push ip
jmp near ptr 标号
2 call far ptr 标号 (段间转移)
相当于 push cs
push ip
jmp far ptr 标号
3 call 16位reg
相当于
push ip
jmp 16位reg
4 call word ptr 内存单元地址
相当于
push ip
jmp Word ptr 内存单元地址
5 call dword ptr 内存单元地址
相当于
push cs
push ip
jmp dword ptr 内存单元地址
CALL与RET指令配合使用说明
子程序开始:
子程序中使用的寄存器入栈
子程序内容
子程序中使用的寄存器出栈(注意顺序)
返回(ret ,retf)
例子:
captial:
push cx
push si
change:
mov cl,[si]
mov ch,0
jcxz ok
and byte ptr [si],11011111b
inc si
jmp short change
ok:
pop si
pop cx
ret
MUL指令
1mul 乘法指令 两个乘数位数相同 同8位 或 同16 位
2同8位 :
一个乘数默认在al中 另一个在8位 寄存器或内存字节单元中结果在ax中
3同16位:
一个乘数默认在ax中 另一个在16位寄存器或内存字单元中结果 高字位在dx中 低字位在ax中
第十一章 标志寄存器
标志寄存器简介
- ZF 标志: 零标志位, 第6位 记录指令执行后结果是否为0 是=1 否=0
- PF 标志: 奇偶标志位 第2位 记录指令执行后结果所有bit中1的个数是否为 偶数 是=1 否=0
- SF 标志: 符号标志位 第7位 记录指令执行后结果是否为负 是=0 否=0
- CF 标志: 进位标志位(无符号) 第0位 记录运算结果的进位值
- OF 标志: 溢出标志位(有符号) 第11位 记录有符号运算是否溢出 溢出=1
- DF 标志: 方向标志位 第10位 记录操作后的 方向 递增=0 递减=1
备注 : DF标志 cld 指令 将DF 置0 std指令 将 DF 置1
相关指令介绍
- adc 指令 : 带进位加法指令
指令格式: adc 操作对象1 , 操作对象2
功能: 操作对象1= 操作对象1 +操作对象2 + CF
备注: 常用于超大数加法
- sbb 指令: 带进位减法指令
指令格式: sbb 操作对象1 , 操作对象2
功能: 操作对象1= 操作对象1 - 操作对象2 - CF
备注: 常用于超大数减法
- pushf 指令: 将标志寄存器指令压栈
- popf 指令: 从栈中弹出数据送入标志寄存器
- movsb :串传送指令 mov es:di , ds;si 字节传送
- movse: 串传送指令 mov es:di , ds;si 字传送
一般结合rep指令 格式: rep movsb
汇编描述: s:movsb
loop s
- cmp 指令: 比较指令 功能相当于减法 但不保存结果 对标志寄存器产生影响
指令格式: cmp 操作对象1 , 操作对象2
功能: 计算 操作对象1 - 操作对象2 但不保存结果 根据结果对标志寄存器进行设置hiz
备注:
ZF=1则AX=BX
ZF=0则AX!=BX
CF=1则AX<BX
CF=0则AX>=BX
CF=0并ZF=0则AX>BX
CF=1或ZF=1则AX<=BX
1)如果SF=0而OF=0说明没有溢出逻辑上真正结果的正负=实际结果的正负,因实际结果为负所以逻辑上真正的结果为负则ah<bh
2)如果SF=1而OF=1说明实际结果为负并且有溢出,则实际结果和真正结果不等,因SF=1实际结果为负。则: 如果因为溢出导致了实际结果为负。那么逻辑上真正的结果必然为正。ah<bh
3)如果SF=0而OF=1说明实际结果为正并且有溢出,则实际结果和真正结果不等,因SF=0,实际结果非负。则:如果因为溢出导致了实际结果为正,那么逻辑上真正的结果必然为负。这样说明ah<bh
4)如果SF=0而OF=0说明没有溢出,逻辑上真正结果的正负=实际结果的正负,因SF=0实际结果非负,所以逻辑上真正的结果非负,所以ah>=bh
- 检测比较结果的条件转移指令
指令 含义 检测的相关标志位
je 等于则转移 zf=1
jne 不等于则转移 zf=0
jb 低于则转移 cf=1
jnb 不低于则转移 cf=0
ja 高于则转移 cf=0且zf=0
jna 不高于则转移 cf=1或zf=1