《微机原理及接口技术知识点总结_计算机-计算机原理.pdf》由会员分享,可在线阅读,更多相关《微机原理及接口技术知识点总结_计算机-计算机原理.pdf(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-微机原理与接口技术?复习参考资料 第一章 概 述 一、计算机中的数制 1、无符号数的表示方法:1十进制计数的表示法 特点:以十为底,逢十进一;共有 0-9 十个数字符号。2二进制计数表示方法:特点:以 2 为底,逢 2 进位;只有 0 和 1 两个符号。3十六进制数的表示法:特点:以 16 为底,逢 16 进位;有 0-9 及 AF表示 1015 共 16 个数字符号。2、各种数制之间的转换 1非十进制数到十进制数的转换 按相应进位计数制的权表达式展开,再按十进制求和。见书本 1.2.3,1.2.4 2十进制数制转换为二进制数制 十进制二进制的转换:整数局部:除 2 取余;小数局部:乘 2
2、取整。十进制十六进制的转换:整数局部:除 16 取余;小数局部:乘 16 取整。以小数点为起点求得整数和小数的各个位。3二进制与十六进制数之间的转换 用 4 位二进制数表示 1 位十六进制数 3、无符号数二进制的运算见教材 P5 4、二进制数的逻辑运算 特点:按位运算,无进借位1与运算 只有 A、B 变量皆为 1 时,与运算的结果就是 1 2或运算 A、B 变量中,只要有一个为 1,或运算的结果就是 1 3非运算 4异或运算 A、B 两个变量只要不同,异或运算的结果就是 1 二、计算机中的码制-1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数*的原码记作*原,反码记作*反,补码记
3、作*补。注意:对正数,三种表示法均一样。它们的差异在于对负数的表示。1原码 定义:符号位:0 表示正,1 表示负;数值位:真值的绝对值。注意:数 0 的原码不唯一 2反码 定义:假设*0,则 *反=*原 假设*0,则*补=*反=*原 假设*0,则*补=*反+1 注意:机器字长为 8 时,数 0 的补码唯一,同为 000000002、8 位二进制的表示围:原码:-127+127 反码:-127+127 补码:-128+127 3、特殊数 10000000 该数在原码中定义为:-0 在反码中定义为:-127 在补码中定义为:-128 对无符号数:(10000000)=128 三、信息的编码 1、十
4、进制数的二进制数编码 用 4 位二进制数表示一位十进制数。有两种表示法:压缩 BCD 码和非压缩 BCD 码。1压缩 BCD 码的每一位用 4 位二进制表示,00001001表示 09,一个字节表示两位十进制数。2非压缩 BCD码用一个字节表示一位十进制数,高 4 位总是 0000,低 4 位的十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之
5、间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-00001001表示 09 字符的编码 计算机采用 7 位二进制代码对字符进展编码 1数字 09 的编码是 01100000111001,它们的高 3 位均是 011,后 4 位正好与其对 应的二进制代码BCD 码相符。2英文字母 AZ 的 ASCII 码从 100000141H 开场顺序递增,
6、字母 az 的 ASCII码从 110000161H 开场顺序递增,这样的排列对信息检索十分有利。第二章 微机组成原理第一节、微机的构造 1、计算机的经典构造.诺依曼构造 1计算机由运算器、控制器、输入设备和输出设备五大局部组成运算器和控制器又称为 CPU 2数据和程序以二进制代码形式不加区分地存放在存储器总,存放位置由地址指定,数制为二进制。3控制器是根据存放在存储器中的指令序列来操作的,并由一个程序计数器控制指令的执行。3、系统总线的分类 1数据总线Data Bus,它决定了处理器的字长。2地址总线Address Bus,它决定系统所能直接的存储器空间的容量。3控制总线Control Bu
7、s 第二节、8086 微处理器 1、8086 是一种单片微处理芯片,其部数据总线的宽度是 16 位,外部数据总线宽度也是16 位,片包含有控制计算机所有功能的各种电路。8086 地址总线的宽度为 20 位,有 1MB 220寻址空间。1、8086CPU由总线接口部件 BIU 和执行部件 EU 组成。BIU 和 EU 的操作是异步的,为 8086 取指令和执行指令的并行操作体统硬件支持。2、8086 处理器的启动 4、存放器构造 8086 微处理器包含有 13 个 16 位的存放器和 9 位标志位。4 个通用存放器A*,B*,C*,D*4 个段存放器CS,DS,SS,ES 4 个指针和变址存放器
8、SP,BP,SI,DI 指令指针IP 1、通用存放器 18086 含 4 个 16 位数据存放器,它们又可分为 8 个 8 位存放器,即:A*AH,AL B*BH,BL C*CH,CL D*DH,DL 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无
9、进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-常用来存放参与运算的操作数或运算结果 2数据存放器特有的习惯用法 A*:累加器。多用于存放中间运算结果。所有 I/O 指令必须都通过 A*与接口传送信息;B*:基址存放器。在间接寻址中用于存放基地址;C*:计数存放器。用于在循环或串操作指令中存放循环次数或重复次数;D*:数据存放器。在 32 位乘除法运算时,存放高 16 位数;在间接寻址的 I/O 指令中存放 I/O 端口地址。2、指针
10、和变址存放器 SP:堆栈指针存放器,其容为栈顶的偏移地址;BP:基址指针存放器,常用于在存时存放存单元的偏移地址。SI:源变址存放器 DI:目标变址存放器 变址存放器常用于指令的间接寻址或变址寻址。3、段存放器 CS:代码段存放器,代码段用于存放指令代码 DS:数据段存放器 ES:附加段存放器,数据段和附加段用来存放操作数 SS:堆栈段存放器,堆栈段用于存放返回地址,保存存放器容,传递参数 4、指令指针IP 16 位指令指针存放器,其容为下一条要执行的指令的偏移地址。5、标志存放器 1状态标志:进位标志位CF :运算结果的最高位有进位或有借位,则 CF=1 辅助进位标志位AF:运算结果的低四位
11、有进位或借位,则 AF=1 溢出标志位OF :运算结果有溢出,则 OF=1 零标志位ZF:反映指令的执行是否产生一个为零的结果 符号标志位SF :指出该指令的执行是否产生一个负的结果 奇偶标志位PF:表示指令运算结果的低 8 位“1个数是否为偶数 2控制标志位 中断允许标志位IF:表示 CPU 是否能够响应外部可屏蔽中断请求 跟踪标志TF:CPU 单步执行 5、8086 的引脚及其功能重点掌握以下引脚 AD15AD0:双向三态的地址总线,输入/输出信号 INTR:可屏蔽中断请求输入信号,高电平有效。可通过设置 IF 的值来控制。十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只
12、有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-NMI:非屏蔽中断输入信号。不能用软件进展屏蔽。RESET
13、:复位输入信号,高电平有效。复位的初始状态见 P21 MN/M*:最小最大模式输入控制信号。第三章 8086 指令系统 第一节 8086 寻址方式 一、数据寻址方式 1、立即寻址 操作数(为一常数)直接由指令给出 (此操作数称为立即数)立即寻址只能用于源操作数 例:MOV A*,1C8FH MOV BYTE PTR2A00H,8FH 错误例:MOV 2A00H,A*;错误!指令操作例:MOV A*,3102H;A*3102H 执行后,(AH)=31H,(AL)=02H 2、存放器寻址 1操作数放在*个存放器中 2源操作数与目的操作数字长要一样 3存放器寻址与段地址无关 例:MOV A*,B*M
14、OV 3F00H,A*MOV CL,AL 错误例:MOV A*,BL ;字长不同 MOV ES:A*,D*;存放器与段无关 3、直接寻址 1指令中直接给出操作数的 16 位偏移地址偏移地址也称为有效地址(EA,Effective Address)2默认的段存放器为 DS,但也可以显式地指定其他段存放器称为段超越前缀 3偏移地址也可用符号地址来表示,如 ADDR、VAR 例:MOV A*,2A00H MOV D*,ES:2A00H MOV SI,TABLE_PTR 4、间接寻址 操作数的偏移地址(有效地址 EA)放在存放器中 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和
15、两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-只有 SI、DI、B*和 BP 可作间址存放器 例:MOV A
16、*,B*MOV CL,CS:DI 错误例:MOV A*,D*MOV CL,A*5、存放器相对寻址 EA=间址存放器的容加上一个 8/16位的位移量 例:MOV A*,B*+8 MOV C*,TABLESI MOV A*,BP;默认段存放器为 SS 指令操作例:MOV A*,DATAB*假设(DS)=6000H,(B*)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H 则物理地址=60000H+1000H+2A00H=63A00H 指令执行后:A*=5566H 6、基址变址寻址 假设操作数的偏移地址:由基址存放器(B*或 BP)给出基址寻址方式 由变址存放器
17、(SI 或 DI)给出变址寻址方式 由一个基址存放器的容和一个变址存放器的容相加而形成操作数的偏移地址,称为基址-变址寻址。EA=B*+SI或DI;EA=BP+SI或DI 同一组的存放器不能同时出现。注意:除了有段跨越前缀的情况外,当基址存放器为 B*时,操作数应该存放在数据段 DS中,当基址存放器为 BP 时,操作数应放在堆栈段 SS 中。例:MOV A*,B*SI MOV A*,B*+SI MOV A*,DS:BP DI 错误例:MOV A*,B*BP MOV A*,DI SI 指令操作例:MOV A*,B*SI 假定:(DS)=8000H,(B*)=2000H,SI=1000H 则物理地
18、址=80000H+2000H+1000H=83000H 指令执行后:(AL)=83000H(AH)=83001H 7、相对基址变址寻址 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常
19、用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-在基址-变址寻址的根底上再加上一个相对位移量 EA=B*+SI或DI+8 位或 16 位位移量;EA=BP+SI或DI+8 位或 16 位位移量指令操作例:MOV A*,DATADIB*假设(DS)=8000H,(B*)=2000H,(DI)=1000H,DATA=200H 则指令执行后(AH)=83021H,(AL)=83020H 存放器间接、存放器相对、基址变址、相对基址变址四种寻址方式的比拟:寻址方式指令操作数形式 存放器间接 只有一个存放器B*
20、/BP/SI/DI之一 存放器相对一个存放器加上位移量 基址变址 两个不同类别的存放器 相对基址-变址 两个不同类别的存放器加上位移量 二、地址寻址方式了解有 4 类,能判断 简要判断依据指令中间的单词:段直接 short,near 段间接 word 段间直接 far 段间间接 dword 第二节 8086 指令系统 一、数据传送指令 1、通用传送指令(1)MOV dest,src;dest src 传送的是字节还是字取决于指令中涉及的存放器是 8 位还是 16 位。具体来说可实现:MOV mem/reg1,mem/reg2 指令中两操作数中至少有一个为存放器 MOV reg,data ;立即
21、数送存放器 MOV mem,data ;立即数送存储单元 MOV acc,mem ;存储单元送累加器 MOV mem,acc ;累加器送存储单元 MOV segreg,mem/reg;存储单元/存放器送段存放器 MOV mem/reg,segreg;段存放器送存储单元/存放器 MOV 指令的使用规则 IP 不能作目的存放器 不允许 mem mem 不允许 segreg segreg 立即数不允许作为目的操作数 不允许 segreg 立即数 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进
22、制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-源操作数与目的操作数类型要一致 当源操作数为单字节的立即数,而目的操作数为间址、变址、基址+变址的存数时,必须用 PTR 说明数据类型。如:MOV
23、B*,12H 是错误的。2、堆栈指令 什么是堆栈.按“后进先出(LIFO)方式工作的存储区域。堆栈以字为单位进展压入弹出操作。规定由 SS 指示堆栈段的段基址,堆栈指针 SP 始终指向堆栈的顶部,SP 的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。压栈指令 PUSH PUSH src ;src 为 16 位操作数 例:PUSH A*;将 A*容压栈 执行操作:SP-1高字节 AH SP-2低字节 AL(SP)SP-2 注意进栈方向是高地址向低地址开展。弹出指令 POP POP dest 例:POP B*;将栈顶容弹至 B*执行操作:BLSP BH SP+1 SP SP+2 堆栈指令在使用
24、时需注意的几点:堆栈操作总是按字进展 不能从栈顶弹出一个字给 CS 堆栈指针为 SS:SP,SP 永远指向栈顶 SP 自动进展增减量-2,+2 3、交换指令*CHG 格式:*CHG reg,mem/reg 功能:交换两操作数的容。要求:两操作数中必须有一个在存放器中;操作数不能为段存放器和立即数;源和目地操作数类型要一致。举例:*CHG A*,B*CHG 2000,CL 4查表指令*LAT 执行的操作:AL(B*)+(AL)又叫查表转换指令,它可根据表项序号查出表中对应代码的容。执行时先将表的首地址 偏移地址送到 B*中,表项序号存于 AL 中。2、输入输出指令 只限于用累加器 AL 或 A*
25、来传送信息。功能:(累加器)I/O 端口(1)输入指令 IN 格式:IN acc,PORT;PORT端口号 0255H 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原
26、码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-IN acc,D*;D*表示的端口围达 64K 例:IN AL,80H ;(AL)(80H 端口)IN AL,D*;(AL)(D*)(2)输出指令 OUT 格式:OUT port,acc OUT D*,acc 例:OUT 68H,A*;(69H,68H)A*OUT D*,AL ;(D*)(AL)在使用间接寻址的 IN/OUT指令时,要事先用传送指令把 I/O 端口号设置到 D*存放器 如:MOV D*,220H IN AL,D*;将 220H 端口容读入 AL 3、目
27、标地址传送指令(1)LEA 传送偏移地址 格式:LEA reg,mem ;将指定存单元的偏移地址送到指定存放器 要求:1)源操作数必须是一个存储器操作数;2)目的操作数必须是一个 16 位的通用存放器。例:LEA B*,SI+10H 设:SI=1000H 则执行该指令后,B*=1010H 注意以下二条指令差异:LEA B*,BUFFER MOV B*,BUFFER 前者表示将符号地址为 BUFFER的存储单元的偏移地址取到 B*中;后者表示将 BUFFER存储单元中的容取到 B*中。下面两条指令等效:LEA B*,BUFFER MOV B*,OFFSET BUFFER 其中 OFFSET BU
28、FFER表示存储器单元 BUFFER的偏移地址。二者都可用于取存储器单元的偏移地址,但 LEA 指令可以取动态的地址,OFFSET只能取静态的地址。二、算术运算指令 1、加法指令(1)不带进位的加法指令 ADD 格式:ADD acc,data ADD mem/reg,data ADD mem/reg1,mem/reg2 实例:ADD AL,30H ADD SI,B*+20H ADD C*,SI 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式
29、进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-ADD DI,200H ADD 指令对 6 个状态标志均产生影响。例:(B*)=D75FH 指令 ADD B*,8046H执行后,状态标志各是多少.D75FH=1110 0111 0101 11
30、11 8046H=1000 0000 0100 0110 1 1 11 11 0110 0111 1010 0101 结果:C=1,Z=0,P=0,A=1,O=1,S=0 判断溢出与进位 从硬件的角度:默认参与运算的操作数都是有符号数,当两数的符号位一样,而和的结果相异时有溢出,则 OF=1,否则 OF=0(2)带进位的加法 ADC ADC 指令在形式上和功能上与 ADD 类似,只是相加时还要包括进位标志 CF 的容,例如:ADC AL,68H;AL(AL)+68H+(CF)ADC A*,C*;A*(A*)+(C*)+(CF)ADC B*,DI ;B*(B*)+DI+1DI+(CF)3加 1
31、指令 INC 格式:INC reg/mem 功能:类似于 C 语言中的+操作:对指定的操作数加 1 例:INC AL INC SI INC BYTE PTRB*+4 注:本指令不影响CF 标志。4非压缩 BCD 码加法调整指令 AAA AAA 指令的操作:如果 AL 的低 4 位9 或 AF=1,则:AL(AL)+6,(AH)(AH)+1,AF 1 AL 高 4 位清零 CF AF 否则 AL 高 4 位清零 5压缩 BCD 码加法调整指令 DAA 两个压缩 BCD 码相加结果在 AL 中,通过 DAA 调整得到一个正确的压缩 BCD 码.指令操作(调整方法):假设 AL 的低 4 位9 或
32、AF=1 则(AL)(AL)+6,AF1 假设 AL 的高 4 位9 或 CF=1 则(AL)(AL)+60H,CF 1 除 OF 外,DAA 指令影响所有其它标志。DAA 指令应紧跟在ADD 或ADC 指令之后。十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特
33、点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-2、减法指令 1不考虑借位的减法指令 SUB 格式:SUB dest,src 操作:dest(dest)-(src)注:1.源和目的操作数不能同时为存储器操作数 2.立即数不能作为目的操作数 指令例子:SUB AL,60H SUB B*+20H,D*SUB A*,C*2考虑借位的减法指令 SBB SBB 指令主要用于多字节的减法。格式:SBB dest,src 操作:dest
34、(dest)-(src)-(CF)指令例子:SBB A*,C*SBB WORD PTRSI,2080H SBB SI,D*3减 1 指令 DEC 作用类似于 C 语言中的操作符。格式:DECopr 操作:opr(opr)-1 指令例子:DEC CL DEC BYTE PTRDI+2 DEC SI 4求补指令 NEG 格式:NEG opr 操作:opr 0-(opr)对一个操作数取补码相当于用 0 减去此操作数,故利用 NEG 指令可得到负数的绝对值。例:假设(AL)=0FCH,则执行 NEG AL 后,(AL)=04H,CF=1 5比拟指令 CMP 格式:CMP dest,src 操作:(de
35、st)-(src)CMP 也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。指令例子:CMP AL,0AH CMP C*,SI CMP DI,B*+03 6非压缩 BCD 码减法调整指令 AAS 对 AL 中由两个非压缩的 BCD 码相减的结果进展调整。调整操作为:假设 AL 的低 4 位9 或 AF=1,则:AL(AL)-6,AH(AH)-1,AF 1 AL 的高 4 位清零 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表
36、达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-CF AF 否则:AL 的高 4 位清零 7压缩 BCD 码减法调整指令 DAS 对 AL 中由两个压缩 BCD 码相减的结果进展调整。调整操作为:假设 AL 的低 4 位9 或 AF=1,
37、则:AL(AL)-6,且 AF1 假设 AL 的高 4 位9 或 CF=1,则:AL(AL)-60H,且 CF 1 DAS 对 OF 无定义,但影响其余标志位。DAS 指令要求跟在减法指令之后。3、乘法指令 进展乘法时:8 位*8 位16 位乘积 16 位*16 位32 位乘积(1)无符号数的乘法指令 MUL(MEM/REG)格式:MUL src 操作:字节操作数 (A*)(AL)(src)字操作数 (D*,A*)(A*)(src)指令例子:MUL BL ;(AL)(BL),乘积在 A*中 MUL C*;(A*)(C*),乘积在 D*,A*中 MUL BYTE PTRB*2有符号数乘法指令 I
38、MUL 格式与 MUL 指令类似,只是要求两操作数均为有符号数。指令例子:IMUL BL ;(A*)(AL)(BL)IMUL WORD PTRSI;(D*,A*)(A*)(SI+1SI)注意:MUL/IMUL指令中 AL(A*)为隐含的乘数存放器;A*(D*,A*)为隐含的乘积存放器;SRC 不能为立即数;除 CF 和 OF 外,对其它标志位无定义。4、除法指令 进展除法时:16 位/8 位8 位商 32 位/16位16 位商 对被除数、商及余数存放有如下规定:被除数 商余数 字节除法 A*AL AH 字除法 D*:A*A*D*1无符号数除法指令 DIV 格式:DIV src 操作:字节操作
39、(AL)(A*)/(SRC)的商(AH)(A*)/(SRC)的余数 字操作(A*)(D*,A*)/(SRC)的商 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码
40、和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-(D*)(D*,A*)/(SRC)的余数 指令例子:DIV CL DIV WORD PTRB*2有符号数除法指令 IDIV 格式:IDIV src 操作与 DIV 类似。商及余数均为有符号数,且余数符号总是与被除数符号一样。注意:对于 DIV/IDIV指令 A*(D*,A*)为隐含的被除数存放器。AL(A*)为隐含的商存放器。AH(D*)为隐含的余数存放器。src 不能为立即数。对所有条件标志位均无定 关于除法操作中的字长扩展问题 除法运算要求被除数字长是除数字长的两倍,假
41、设不满足则需对被除数进展扩展,否则产生错误。对于无符号数除法扩展,只需将 AH 或 D*清零即可。对有符号数而言,则是符号位的扩展。可使用前面介绍过的符号扩展指令CBW 和 CWD 三、逻辑运算和移位指令 1、逻辑运算指令 1逻辑与 AND 对两个操作数进展按位逻辑“与操作。格式:AND dest,src 用途:保存操作数的*几位,清零其他位。例 1:保存 AL 中低 4 位,高 4 位清 0。AND AL,0FH 2逻辑或 OR 对两个操作数进展按位逻辑或操作。格式:OR dest,src 用途:对操作数的*几位置 1;对两操作数进展组合。例 1:把 AL 中的非压缩 BCD 码变成相应十进
42、制数的 ASCII 码。OR AL,30H 3逻辑非 NOT 对操作数进展按位逻辑非操作。格式:NOT mem/reg 例:NOT C*NOT BYTE PTRDI 4逻辑异或*OR 对两个操作数按位进展异或操作。格式:*OR dest,src 用途:对 reg 清零(自身异或)把 reg/mem的*几位变反(与1异或)例 1:把 A*存放器清零。MOV A*,0*OR A*,A*十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的
43、转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-AND A*,0 SUB A*,A*5测试指令 TEST 操作与 AND 指令类似,但不将与的结果送回,只影响标志位。TEST 指令常用于位测试,与条件转移指令一起用。例:测试 AL 的容是否为负数。TEST
44、 AL,80H ;检查 AL 中 D7=1.JNZ MINUS ;是 1(负数),转 MINUS ;否则为正数 2、移位指令(1)非循环移位指令 算术左移指令 SAL(Shift Arithmetic Left)算术右移指令 SAR(Shift Arithmetic Right)逻辑左移指令 SHL(Shift Left)逻辑右移指令 SHR(Shift Right)这 4 条指令的格式一样,以 SAL 为例:CL ;移位位数大于 1 时 SAL mem/reg 1;移位位数等于 1 时 算术移位把操作数看做有符号数;逻辑移位把操作数看做无符号数。移位位数放在 CL 存放器中,如果只移 1 位
45、,也 可以直接写在指令中。例如:MOV CL,4 SHR AL,CL ;AL 中的容右移 4 位 影响 C,P,S,Z,O标志。结果未溢出时:左移 1 位操作数*2 右移 1 位操作数/2 例:把 AL 中的数*乘 10 因为 10=8+2=23+21,所以可用移位实现乘 10 操作。程序如下:MOV CL,3 SAL AL,1 ;2*MOV AH,AL SAL AL,1 ;4*SAL AL,1 ;8*ADD AL,AH ;8*+2*=10*四、控制转移指令 1、转移指令 1无条件转移指令 JMP 十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法
46、特点以为底逢进位有及表示共个数字符号各种数制之间的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-格式:JMP label 本指令无条件转移到指定的目标地址,以执行从该地址开场的程序段。
47、2条件转移指令补充容 根据单个标志位设置的条件转移指令/JC ;低于,或 CF=1,则转移 JNB/JNC/JAE;高于或等于,或 CF=0,则转移 JP/JPE ;奇偶标志 PF=1(偶),则转移 JNP/JPO ;奇偶标志 PF=0(奇),则转移 JZ/JE ;结果为零(ZF=1),则转移 JNZ/JNE ;结果不为零(ZF=0),则转移 JS ;SF=1,则转移 JNS ;SF=0,则转移 JO ;OF=1,则转移 JNO ;OF=0,则转移 根据组合条件设置的条件转移指令 这类指令主要用来判断两个数的大小。*判断无符号数的大小 JA 高于则转移 条件为:CF=0 ZF=0,即 AB J
48、NA/E 低于或等于则转移 条件为:CF=1 ZF=1,即 AB AB 则转移 JNB AB 则转移*判断有符号数的大小 JG;大于则转移(AB)条件为:(SF OF=0)ZF=0 JGE;大于或等于则转移(AB)条件为:(SF OF=0)ZF=1JLE;小于或等于则转移(AB)条件为:(SF OF=1)ZF=1 JL;小于则转移(AB 条件为:(SF OF=1)ZF=0 2、循环控制指令 用在循环程序中以确定是否要继续循环。循环次数通常置于 C*中。十为底逢十进一共有十个数字符号二进制计数表示方法特点以为底逢进位只有和两个符号十六进制数的表示法特点以为底逢进位有及表示共个数字符号各种数制之间
49、的转换非十进制数到十进制数的转换按相应进位计数制的权表达式进制十六进制的转换整数局部除取余小数局部乘取整以小数点为起点求得整数和小数的各个位二进制与十六进制数之间的转换用位二进制数表示位十六进制数无符号数二进制的运算见教材二进制数的逻辑运算特点按位运算无进借位只要不同异或运算的结果就是二计算机中的码制对于符号数机器数常用的表示方法有原码反码和补码三种数的原码记作原反码记作反补码记作补注意对正数三种表示法均一样它们的差异在于对负数的表示原码定义符号位表示正表示-转移的目标应在距离本指令-128+127 的围之。循环控制指令不影响标志位。(1)LOOP 格式:LOOP label 操作:(C*)-
50、1C*;假设(C*)0,则转至 label 处执行;否则退出循环,执行 LOOP 后面的指令。LOOP 指令与下面的指令段等价:DEC C*JNZ label 3、过程调用指令 1调用指令 CALL 一般格式:CALLsub ;sub为子程序的入口 4、中断指令(1)INT n 执行类型 n 的中断效劳程序,N=0 255 五、处理器控制指令 1、标志位操作 1CF 设置指令 CLC 0CF STC 1CF CMC CF 变反 2DF 设置指令 CLD 0DF(串操作的指针移动方向从低到高)STD 1DF(串操作的指针移动方向从高到低)3IF 设置指令 CLI0IF(制止 INTR 中断)ST