收藏 分享(赏)

汇编语言程序设计32(教室版).ppt

上传人:wspkg9802 文档编号:5957340 上传时间:2019-03-22 格式:PPT 页数:229 大小:1.87MB
下载 相关 举报
汇编语言程序设计32(教室版).ppt_第1页
第1页 / 共229页
汇编语言程序设计32(教室版).ppt_第2页
第2页 / 共229页
汇编语言程序设计32(教室版).ppt_第3页
第3页 / 共229页
汇编语言程序设计32(教室版).ppt_第4页
第4页 / 共229页
汇编语言程序设计32(教室版).ppt_第5页
第5页 / 共229页
点击查看更多>>
资源描述

1、苏州科技学院电子学院赵梅制作,汇编语言程序设计,主讲:赵 梅,课程简介,引用,概述,汇编语言是计算机提供给用户的最快最有效的语言,也是利用计算机所有硬件特性并能直接控制硬件的唯一语言。,因而在对于程序的空间和时间要求很高的场合, 汇编语言是必不可少的。,很多需要直接控制硬件的应用场合, 更是非用汇编语言不可。,特点,汇编语言是介于计算机能直接理解的机器语言与使用者容易理解的高级语言之间的一种语言。它除有与代码指令一一对应的符号指令外,还增加了专用于定义变量、常量、符号、过程、分配存贮空间、定位程序起始地址等一系列称之为伪指令的符号指令。,同高级语言比较,它更接近机器语言,更能全面地反映计算机硬

2、件的功能特点。同机器语言比较,它易于阅读,编写和修改程序。因此, 使用汇编语言可编写出运行速度快、占存储空间少、能充分利用硬件资源、发挥计算机效能并能进行精确控制的程序。,应用,高级语言编译程序的编制;编辑、调试,链接装配、磁盘驱动和磁盘读写等实用程序的编制;控制、指挥和监测等实时处理程序的编制;计算机系统的开发。,汇编语言是面向机器的语言,故它将因计算机机型的不同而异。但用汇编语言进行程序设计的基本概念、基本技巧和基本方法是普遍适用的。我们选择目前国内最广泛使用的 IBM PC 作为基础讲授。其它机型同学们定可触类旁通。,学习,汇编语言程序设计,第1章 汇编语言基础知识 第2章 8086的指

3、令系统 第3章 汇编语言程序格式 第4章 基本汇编语言程序设计,第1章 汇编语言基础知识,1.1 计算机系统概述 1.2 数据表示 1.3 Intel80x86系列微处理器 1.4 微型计算机系统 1.5 8086微处理器 1.6 8086的寻址方式,1.1 计算机系统概述,计算机系统,中央处理器 CPU,总线控制 逻辑,存储器,接口,接口,大容量 存储器,I/O 设备,系统总线,I/O 子 系 统,计算机结构,1.1 计算机系统概述,计算机程序设计语言,机器语言 汇编语言 高级语言,0或1组成的代码 使用指令集编写程序的规则,B8 64 0005 00 01,一种符号语言 用助记符表示操作码

4、,MOV AX,100 ADD AX,256,接近于人类自然语言的语法 习惯及数学表达形式,1.2 数制表示,数制的基数与权,基数:数制所使用的数码个数,例:十进制数使用09十个数,所以它的基数是10,权:数制每一位置所具有的值,二进制数使用 0、1两个数, 它的“基”?各 位的“权”又是 多少呢?,由0、1二个数码构成,基数为2,第i位的权为2i, 运算规则:逢二进一、借一作二,二进制数(Binary ),101011B=125+024+123+022+121+120=43D,一个二进制数按权展开求和就转换成了对应的十进制数,十六进制数(Hexadecimal),14AFH=1163+416

5、2+10161+15160=5295D,十六进制数是汇编语言的书写工具,数制转换(1),1. 非十进制数转换成十进制数,按权展开求和,2. 十进制数转换成非十进制数,整数部分与小数部分 分别转换,数制转换(2),例2:十进制数转换成非十进制数(小数部分),0.625D=0.101B=0.AH,0.625*2=1.2510.25*2= 0.500.5*2= 11,0.625*16=10A,乘基数取整数,57.625D=111001.101B=39.AH,高,低,数制转换(3),3. 二、十六进制数之间的转换,二进制数 十六进制数 四位一组,分组时如位数不够,整数部分在最左边补零,小数部分在最右边

6、补零,十六进制二进制,一位对应换成二进制数四位,1100100.11011B=,.,0100,0110,1101,1000,=64. D8H,4,6,D,8,编码,ASC码: 美国信息交换标准码,一般用7bit 二进制编码来表示数字 、英文字母、符号等,ASCII值小于20H的是不可显示字符,BCD码:1位十进制数用4位二进制编码表示,有符号数的表示法,机器数: 连同一个符号位在一起作为一个数叫机器数,连符号一起数字化了的数,机器数,反码:对于二进制正数,反码等于该数原码对于二进制负数,符号位为1,其余各位取反,有符号数的表示法,补码:对于二进制正数,补码等于该数原码对于二进制负数,符号位为1

7、,其余各位取反,末位加1,例:设机器字长为8位,二进制数+1100101和-1010001其补码为:01100101,10101111,有符号数的表示法,1.3 Intel 80X86微处理器,型号,8086,8088,80286,80386,发布 年份,1978,1979,1982,1986,字长 (位),16,16,32,16,晶体管数 (万个),2.9,2.9,13.4,27.5,主频 (MHz),4.77,4.77,620,12.533,数据 总线 宽度 (位),16,16,16,32,外部 总线 宽度 (位),地址 总线 宽度 (位),寻址 空间,高速 缓存,16,8,16,32,2

8、0,20,24,32,1M,1M,16M,4G,无,无,无,有,型号,80486,Pentium (586),发布 年份,1989,1993,1995,1997,字长 (位),32,32,32,32,晶体管数 (万个),120 160,310 330,550,750,主频 (MHz),25 100,60 166,150 200,233 333,数据 总线 宽度 (位),32,64,64,64,外部 总线 宽度 (位),地址 总线 宽度 (位),寻址 空间,高速 缓存,32,64,64,64,32,32,36,36,4G,4G,64G,64G,8KB,8KB数 据8KB 指令,Pentium P

9、ro(P6),PentiumII,8KB数 据8KB 指令 256KB 二级高 速缓存,32KB 512KB二级高速缓存,有独立封装和独立总线,1.4 微型计算机(PC)系统,1981年,IBM公司,8088CPU,IBM PC个人计算机,扩展型PC/XT,增强型IBM/AT(80286),各种32位PC采用32位Intel 80x86CPU,现在人们谈论的PC机是以80x86CPU 构成的微型计算机系统,主 存 空 间 的 分 配,复制ROM,HMA(64KB),系统ROM 128KB,系统RAM 640KB,显示RAM 128KB,扩展ROM 128KB,FFFFFFFF,00100000

10、,000E0000,000C0000,000A0000,00000000,系统RAM 640KB,显示RAM 128KB,扩展ROM 128KB,系统ROM 128KB,实方式主存,高端主存区,复制BIOS,只能在保护方式使用,PC软件,汇编语言的运行环境,DOS操作系统,Windows 的MS-DOS环境,汇编语言程序设计主要利用的一些软件:,编辑软件:EDIT;记事本;Turbo C编辑器等 汇编程序:MASM 5.X; MASM 6.X; Turbo ASM 等 连接程序:LINK.EXE 调试程序:DEBUG、 Turbo Debugger等,1.5 8086微处理器,SP,BP,SI

11、,DI,CS,DS,SS,ES,IP,内部暂存寄存器,暂存寄存器,FR,EU控制系统,总线控制逻辑,数据总线16,通用寄存器,8088,指令队列,8088/8086 外部总线,数据总线,地址总线20位,执行部件EU,总线接口部件,BIU,16位,控制总线,AX BX CX DX,SP,BP,8086的寄存器,AX BX CX DX,15 0,累加器 基地址寄存器 计数器 数据寄存器,8086/8088,堆栈指针 基址指针 源变址 目的变址,DI,SI,通用寄存器,专用寄存器,IP,指令指针寄存器 标志寄存器,用来存放代码段的偏移地址,总是指向下一条指令的首地址,FLAGS,15 0,存储器组织

12、与段寄存器,1,0,12H 40H 35H 18H,(0002H)=40H (0000H)=18H,字:2个字节组成一个字(16位),注意: 机器内部访问存储器字单元 时是以偶地址开始的,如果 以奇地址访问字单元,需要 访问两次存储器,同一个地址既可看作字节单元的地址,又可看作 字单元、双字单元或4字单元的地址,存储器的分段管理,指令指针寄存器IP16位 和地址有关的寄存 器SP、BP、SI、DI16位 算术逻辑单元ALU16位,分段,每一段可以从1M空间的任 一个能被16除尽的地址开始。 段内地址是16位的,物理地址的形成,四个专门存放段地址的寄存器CS:代码段寄存器 DS:数据段寄存器SS

13、:堆栈段寄存器ES:附加段寄存器,每一个段寄存器可以确定一个段的起始地址,存放当前正在运行程序的段首地址 存放当前程序所用数据的段首地址 存放堆栈区域的段首地址 辅助数据区域的段首地址,物理地址=段地址16+偏移地址,地址加法器,加法器,1.6 8086的寻址方式,寻址方式:寻找操作数的方式,指令系统:编制计算机程序的指令集合,程序:就是根据需要用指令编排出的操作顺序,机器指令8B D98A 04BF 00 20,汇编语言指令格式,例: MOV AL,80H,立即数可以是8位、16位 、32位(386以后)数值 立即数通常用来给寄存器赋值,2. 寄存器寻址,操作数在8位、16位(或32位)寄存

14、器中,INC CX ;将CX的内容加1 ROL AH,1 ;将AH中的内容循环左移一位 MOV AX,BX MOV AX,1090H,寄存器可以是AX、BX、CX、DX、SI、DI、SP、BPAH、AL、BH、BL、CH、CL、DH、DL,在一条指令中,可以对源操作数采用寄存器寻址,也可以对目 标操作数采用寄存器寻址,还可以两者都采用寄存器寻址方式,例:,3. 存储器寻址,操作数在存储器中,其有效地址(EA)包含在指令中的寻址方式,注意:立即数寻址和直接寻址的书写格式, 直接寻址的地址要放在方括号中,ES:,(1)直接寻址,假设DS=5000H,地址 为51070H字存储单元 的内容是6789

15、H。,执行 MOV AX, 1070H,例: MOV AX, VALUE 或 MOV AX,VALUE,符号地址,(2) 寄存器间接寻址,操作数在存储器中,操作数的有效地址是 寄存器的内容。,BX、BP SI、DI 之一,注:如果没有特殊说明,用寄存器BP寻址时, 段寄存器是SS,其余为数据段寄存器DS 。,例1:假设(DS)=5000H,(SI)=1234H,51234H字单元的内容是6789H,执行指令 MOV AX,SI,例2:假设(SS)=4000H,(BP)=1234H,(CX)=6789H,执行该条指令 MOV BP,CX,存储器,堆 栈 段,40000H,41234H,.,000

16、00H,41235H,(3) 寄存器相对寻址,带位移量的寄存器间接寻址,有效地址=,BX BP SI DI,+,8位位移量 16位位移量,执行该指令后,(AX)=55AAH,例: 假设(DS)=5000H,(DI)=3678H548ACH字存储单元的内容是55AAH,50000H3678H1234H 548ACH,+,带位移量的寄存器间接寻址寄存器相对寻址,MOV AX,1234H DI ,执行 MOV AX, DI+1234H ,寄存器间接寻址的物理地址单元是548ACH,(4) 基址变址寻址,操作数的有效地址是一个基址寄存器的内容加上 一个变址寄存器的内容,有效地址EA=,+,BXBP,S

17、IDI,语句执行后(17000H)和(17001H)AX,例: MOV AX,BX+SI,假设(DS)=1000H,(BX)=5000H,(SI)=2000H 则:有效地址为:(BX)+(SI)= 7000H物理地址为:10000H+7000H=17000H,MOV AX, BX SI ,(5) 相对基址变址寻址,有效地址EA=,+,带位移量的基址变址寻址,+,BXBP,SIDI,8位位移量16位位移量,语句执行后(17002H)和(17003H)AX,例: MOV AX,BX+SI+2,假设(DS)=1000H,(BX)=5000H,(SI)=2000H 则:有效地址为:(BX)+(SI)+

18、2 =7002H物理地址为:10000H+7002H=17002H,MOV AX,2BXSI,综合练习,假设:BX=0158H,DI=10A5H,位移量=1B57H,DS=2100H指令没有使用前缀。, 直接寻址:有效地址=物理地址=,1B57H 21000H+1B57H=22B57H, 寄存器间接寻址(寄存器为BX):有效地址=物理地址=,0158H 21000H+0158H=21158H, BX寄存器相对间接寻址:有效地址=物理地址=,0158H+1B57H=1CAFH 21000H+1CAFH=22CAFH,综合练习,假设:BX=0158H,DI=10A5H,位移量=1B57H,DS=2

19、100H 指令没有使用前缀。, 变址寻址(寄存器为DI) :,10A5H 21000H+10A5H=220A5H,10A5H+1B57H=2BFCH 21000H+2BFCH=23BFCH,有效地址= 物理地址=,综合练习, 基址变址寻址(BX为基址寄存器,DI为变址寄存器)有效地址=物理地址=,0158H+10A5H=11FDH 21000H+11FDH=221FDH, 相对的基址变址寻址(BX为基址寄存器,DI为变址寄存器)有效地址=物理地址=,0158H+10A5H+1B57H=2D54H 21000H+2D54H=23D54H,假设:BX=0158H,DI=10A5H,位移量=1B57

20、H,DS=2100H 指令没有使用前缀。,寻址方式总结,操作数寻址,作业:1.11 1.15 1.17 1.19 1.20 1.22 1.24,第2章 8086的指令系统,2.1 数据传送类指令 2.2 算术运算类指令 2.3 位操作类指令 2.4 控制转移类指令 2.5 串操作类指令 2.6 处理机控制类指令,2.1 数据传送类指令,指令系统,数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制指令,1. 传送指令,功能:把一个字节或一个字从源操作数SCR送至目的操作数DST,源操作数不改变。,注意:源和目的操作数的类型要一致,即同时为字节或同时为字,段寄存器 CS、 DS

21、、ES、SS,立即数,存储器,8位获16位通用寄存器 AX、BX、CX、DX BP、SP、SI、DI,IP,MOV指令不影 响标志位,2.1 .1 通用数据传送指令,例:,MOV AX,1000H,MOV AL,E,MOV AX,2BPSI,;立即数送到AX,;立即数送到AL,E的ASCII码,如果BP换成BX?,判断对错,MOV 5,AL MOV BX,SI MOV DS,1000H MOV CS,AX MOV AX,DX MOV SI,SI MOV SI,AX, ,判断对错,MOV BX,AL MOV AX,DI+SI MOV DS,ES MOV AL,AH MOV DS,AX MOV S

22、I,DI MOV 2SI,AX, ,学习DEBUG,2. 交换指令XCHG,格式:XCHG OPRD1,OPRD2 功能:操作数OPRD1的内容与操作数OPRD2的内容交换,OPRD1和OPRD2可以是通用寄存器和存储单元 (两个操作数不能同时为存储单元)可以采用 各种存储器寻址方式 注意:不允许使用段寄存器、立即数,例:XCHG AL,AHXCHG SI,BXXCHG SI+3,ALXCHG DX,DI+BX+3,格式:XLAT 功能:完成一个字节的查表转换。把累加器AL中的值,转换成以BX为表基址的表中值,3. 换码指令XLAT,注意:表的长度不能超过 256个字节,AL=,XX,换码指令

23、的功能,TABLE,XX,例:用查表法查求 3 的平方,假设数据表已经存放在2000H开始的内存中。,2000H,2009H,MOV BX,2000H,XLAT,09H,主程序,子程序1,子程序2,CS:IP,CS:IP,2.1 .2 堆栈操作指令,00000H,50000H,52000H,堆栈段,假设:SS=5000H,SP=2000H,SP自动减2将源操作数的内容传送到SP指向的单元,8A,9B,1. 进栈指令PUSH,00000H,50000H,52000H,堆栈段,假设:SS=5000H,SP=1FFEH,2. 出栈指令POP,将SP指向单元的内容传送到目的操作数 SP自动加2,8A,

24、9B,9B,8A,执行后 BX=,H,可以是通用寄存器、段寄存器(CS除外)和字存储单元,PUSH reg POP reg PUSH mem POP mem PUSH segreg POP segreg PUSH data,除CS的所有段寄存器,8086以后,1. 标志寄存器传送,(1) 标志送AH指令LAHF,格式: LAHF 功能:标志寄存器的低8位对应的传送到寄存器AH,15,0,7,0,2.1 .3 标志传送指令,格式:SAHF 功能:寄存器AH的内容对应的送至标志寄存器的低8位,(2) AH送标志指令SAHF,7,0,(3) 标志进栈指令PUSHF,格式:PUSHF 功能: SP-2

25、 ,把标志寄存器的内容(16位)压入堆栈,2. 标志位操作,1. 有效地址送指令LEA,格式:LEA REG,SRC,16位通用寄存器,功能:把源操作数的有效地址传送到目的操作数REG寄存器中,例:LEA AX,2728H ;将2728单元的有效地址送AX,执行后,AX=2728HLEA BX,BP+SI ;指令执行后,BX的内容为BP+SI的值,注意:LEA 和 MOV 的区别,2.1 .4 地址传送指令,格式: LDS REG,SRC,功能:源操作数 SRC所指向的存储单元的内容送到目的寄存器REG中接下来存储单元的内容送到数据段寄存器DS。,2. 指针送指令,LDS、LES,例:LDS

26、DI ,2130H,2130H,2133H,执行后 DS=DI=,LES对应的段寄存为ES,存储器,78,56,34,12,H,H,输入指令IN,格式:IN 累加器,端口地址 功能:从一个端口读取一个字节或一个字,传送到AL或AX,端口地址可以直接给出或由DX寄存器间接给出,注意:外部设备最多可有65536个I/O端口 (0000FFFFH), 只有前256个端口地址可 在指令中直接给出(00FFH),2.1 .5 输入输出指令,例: IN AL,50H ;从50H端口读入8位数据到AL IN AX,70H ;从70H端口读入16位数据到AX,直接寻址或长格式,2. 输出指令OUT,格式: O

27、UT 端口地址,累加器 功能:将AL中的一个字节或AX中的一个字输出到指定端口,例: OUT 5,AL ;将AL寄存器的内容输出到端口5 OUT DX,AL ;将AL的内容输出到DX所指向的端口 OUT DX,AX ;将AX的内容输出到DX所指向的端口,判断对错:,OUT 258,AL OUT DX,BL IN AL,1234H IN AL,BH OUT 120,AL OUT DX,AL IN AL,80H IN AL,DX,判断对错:,PUSH AL POP CS XCHG DS,BX XCHG BX,SI POP BH XCHG AX,1234H,2.2 算数运算类指令,1. 加法指令AD

28、D,格式: ADD DST,SRC 功能:两个操作数相加,结果送至目的操作数DST,源操作数不变,操作数可以是字节、字,例:,ADD AL,50H,;AL的内容和50H相加,结果AL中,加法指令对标志位的影响, ZF 零标志 结果为零ZF=1,否则ZF=0 SF 符号标志 结果为负SF=1,否则SF=0CF 进位标志 结果最高有效位有进位 CF=1,否则CF=0 AF 半进位标志 低4位向高4位有进位AF=1,否则AF=0 PF 奇偶标志 低8位1的个数为偶数PF=1,否则PF=0,对OF SF ZF AF PF CF 六个标志产生影响,1 0 0 1 1 1 0 0 + 1 0 0 0 1

29、0 1 0,0 0 1 0 0 1 1 0,CF= SF= AF=,例:9CH+8AH=26H,1,0,1,ZF=0 PF=0, 溢出标志OF,溢出:超出数据位能表示的范围,8位二进制数 0255(0 28) -128+127(-27+27-1) 16位二进制数 065535( 0 216)-32768+32767(-215215-1),若两个操作数的符号相同,而结果的 符号与之相反时,OF=1,否则OF=0,OF标志是根据操作数的符号变化来设置的,如果两个同符号数相加,结果符号位发生了 变化,则表示溢出,0 0 1 0 0 0 1 0,OF=1,符号位变化了,表示结果超出了8位二进制数表示的

30、数据范围,0 0 0 0 1 0 0 1 + 0 1 1 1 1 1 0 0,1 0 0 0 0 1 0 1,OF=1,符号位变化了,例2:,0 0 0 0 1 1 0 1,符号位没变,OF=0,OF=?,2. 带进位加法指令ADC,格式: ADC DST,SRC功能:两个操作数相加再加上进位标志CF,结果送至目的操作数DST,源操作数不变,操作数可以是字节、字,AX=,MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX,例:编写两个四字节的无符号数相加的

31、程序段,两个数分别放在2000H、3000H开始的单元,要求结果放在2000H 开始的单元,56,34,12,F0,DE,BC,9A,78,2000H,3000H,MOV AX,SI,H,ADD AX,DI,MOV DI,3000H,MOV SI,2000H,56,78,3568H,CF=1,AX=,MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX,例:编写两个四字节的无符号数相加的程序段,两个数分别放在2000H、3000H开始的单元,要求结果放在20

32、00H 开始的单元,56,34,12,F0,DE,BC,9A,78,2000H,3000H,MOV AX,SI,ADD AX,DI,MOV DI,3000H,MOV SI,2000H,MOV SI ,AX,56,78,3568H,CF=1,35,68,AX=,MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX,例:编写两个四字节的无符号数相加的程序段,两个数分别放在2000H、3000H开始的单元,要求结果放在2000H 开始的单元,56,34,12,F0

33、,DE,BC,9A,78,2000H,3000H,MOV AX,SI,12,34,H,ADD AX,DI,MOV DI,3000H,MOV SI,2000H,MOV SI ,AX,MOV AX, SI+2 ,35,68,ADC AX, DI+2 ,CF=1,ACF1H,78,56,AX=,MOV SI,2000H MOV AX,SI MOV DI,3000H ADD AX,DI MOV SI ,AX MOV AX, SI+2 ADC AX, DI+2 MOV SI+2 ,AX,例:编写两个四字节的无符号数相加的程序段,两个数分别放在2000H、3000H开始的单元,要求结果放在2000H 开始

34、的单元,56,34,12,F0,DE,BC,9A,78,2000H,3000H,MOV AX,SI,12,34,H,ADD AX,DI,MOV DI,3000H,MOV SI,2000H,MOV SI ,AX,MOV AX, SI+2 ,ADC AX, DI+2 ,CF=1,ACF1H,MOV SI+2 ,AX,F1,AC,CF=0,3. 增量指令 INC,格式: INC OPR 功能:操作数OPR的内容加1,结果送回OPR,这条指令执行的结果不影响进位标志CF, 但影响其它的五个状态标志,例: INC AL ;AL的内容加1INC CX ;CX的内容加1,操作数可以是字节、字,1. 减法指令

35、SUB,格式: SUB DST,SRC 功能: DST的内容减去SRC的内容,结果送到目的操作数DST中,源操作数不变。,执行结果和加法指 令一样影响标志位,2.2.2 减法指令,3. 减量 指令DEC,格式:DEC OPR 功能:操作数OPR的内容减1,并把结果送回OPR,执行结果不影响CF,但影响其它五个状态标志,执行结果影响状态标志,5. 比较指令CMP,格式: CMP OPR1,OPR2功能: 操作数OPR1的内容减去OPR2的内容,运算结果不送到OPR1,但影响状态标志,注意:执行CMP OPR1,OPR2 后,OPR1和OPR2两个操作数本身没有任何变化,只影响了 标志,例:a、b

36、、c均为双精度数,它们分别放在地址为 X、Y、Z、的存储单元中,存放时高位字在高地址,低位字在低地址中,编程实现 a+b+24-c,结果在W单元中。,MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ADD AX,24 ADC DX,0 SUB AX,Z SBB DX,Z+2 MOV W,AX MOV W+2,DX,格式: MUL IMUL SRC功能:如果SRC是字节操作数,则AL的内容与SRC相乘16位结果送到AX中。如果SRC是字操作数,则AX的内容与SRC相乘32位的结果送到DX和AX中,DX中是高16位,AX中是低16位,有符号数乘法指令,源操作数,是除

37、立即数以外的任意寻址方式,2.2 .3 乘法指令,如果乘积结果的高半部分(字节相乘时为AH,字相 乘时为DX)不等于零,则标志CF=1,OF=1;否则 CF=0,OF=0。有符号数积的高一半是低一半的符 号扩展,CF=OF=0,否则CF=OF=1,对其它标志, 该指令无定义,所以,如果CF=0,OF=0,表示AH或DX中 的结果数无效。,例: 假设(AL)=0B4H,(BL)=11H求执行MUL BL的乘积值 求执行IMUL BL的乘积值, 无符号数:(AL)=0B4H=180D( BL)=11H=17D,执行 MUL BL 后(AX)=0BF4H AH0 CF=OF=1,有符号数:(AL)=

38、0B4H= -76D(BL)=11H=17D,执行 IMUL BL 后(AX)=0FAF4H (AH)不是符号扩展 CF=OF=1,0B4H=10110100B 取补码=4CH = - 76D,格式: DIV/ IDIV SRC 功能:如果SRC是字节操作数,则AX的内容除以SRC ,8位的商送到AL中;8位余数送到AH中。如果SRC是字操作数,则DX(高16位)和AX(低16位)中的内容除以SRC的内容,16位的商送到 AX中;16位的余数送到DX中。,有符号数除法指令,源操作数,是除立即数以外的任意寻址方式,2.2 .4 除法指令,有符号数除法指令,余数的符号和被除数的 符号相同。除法指令

39、对标志位的影响无定义,注意:如果除数为0,或者8位数除时商超过8位, 或者16位除时商超过16位,则引起0号中断,(1) CBW 字节转换为字命令,格式:CBW 功能:寄存器AL中的符号扩展到寄存器AH。若AL的最高有效位为0,则AH=0,否则AH=0FFH,2.2 .5 符号扩展指令, MOV AX,X IMUL Y ;计算X*Y (结果在DX,AX中) MOV CX,AX MOV BX,DX ;积保存到BX:CX中 MOV AX,Z CWD ;把AX扩展为32位(扩展到DX) ADD AX,CX ADC DX,BX SUB AX,1024 ;计算差 SBB DX,0 ;减借位 MOV CX

40、,75 IDIV CX ;计算商和余数 ,例:计算表达式的值 (a*b+c1024)/ 75,假设其中的a、b、c均为16位带符号数,分别放在名 为X、Y、Z的变量单元中。,结果商保存在AX中, 余数保存在DX中,a*b的值,DX:AX是Z值,十进制调整,压缩BCD码加法调整指令DAA 压缩BCD码减法调整指令DAS 非压缩BCD码加法调整指令AAA 非压缩BCD码减法调整指令AAS 非压缩BCD码乘法调整指令AAM 非压缩BCD码除法调整指令AAD,用4位二进制数表示1位十进制数。一个字节含有两个十进制数位的二进制数,以8位为一组表示一个十进制数位,8位中的低4位表示8421的BCD码,高4

41、位没有意义,2.2 .6 十进制调整指令,1. 压缩BCD码加法调整指令 DAA,格式:DAA 功能:如果AF=1,或AL的低4位是十六进制的AF则AL内容加06H,且AF=1如果CF=1,或AL的高4位是十六进制的AF则AL内容加60H,且CF=1,执行完加法指令ADD或ADC,加的结果在AL寄存器中,DAA指令对OF标志无定义,但影响其它标志位,2. 压缩BCD码减法调整指令 DAS,格式:DAS 功能:如果AF=1,或AL的低4位是十六进制的AF则AL内容减去06H,且AF=1如果CF=1,或AL的高4位是十六进制的AF则AL内容减去60H,且CF=1,执行完减法指令SUB或SBB,减的

42、结果在AL寄存器中,DAS指令对OF标志无定义,但影响其它标志位,3.非压缩BCD码加法调整指令AAA,格式:AAA 功能:如果AL低4位在09之间,且AF=0,则清AL的高4位,CF=0如果AL的低4位在十六进制数AF之间,或AF=1则AL内容加6H,清AL高4位,AH内容加1,AF=CF=1,执行完加法指令ADD或ADC,加的结果在AL寄存器中,AAA指令只影响AF和CF,其余标志位无定义。,4. 非压缩BCD码减法调整指令AAS,格式:AAS 功能:如果AL低4位在09之间,且AF=0,则清AL的高4位,CF=0如果AL的低4位在十六进制数AF之间,或AF=1则AL内容加6H,清AL高4

43、位,AH内容减1,AF=CF=1,执行完减法指令SUB或SBB,减的结果在AL寄存器中,AAS指令只影响AF和CF,其余标志位无定义。,5. 乘法的ASII调整指令AAM,格式:AAM 方法:把AL内容除以0AH,商放在AH中,余数在 AL中。,执行完乘法指令MUL,结果在AL寄存器中,AAM指令根据AL的内容影响SF、ZF和PF,其余无定义。,6. 除法的ASCII调整指令AAD,格式: AAD 操作: 10*(AH)+(AL),(AH)0,2.3 位操作类指令,2.3.1 逻辑运算指令,1. 逻辑与指令AND,格式: AND DST,SRC 功能:两个操作数进行按位的逻辑“与”运算,结果送

44、到目的操作数DST,CF=0,OF=0,逻辑运算是按位操作的,2. 逻辑或指令OR,格式: OR DST,SRC 功能:两个操作数进行按位的逻辑“或”运算,结果送到目的操作数DST,CF=0,OF=0,4. 逻辑非指令NOT,格式: NOT OPR 功能:操作数OPR取反,然后送回OPR,对标志没有影响,1、检查AL中的D6位或D2位是否有一位为1,例:逻辑指令练习,2、要求屏蔽AL寄存器中的D6位和D4位,AND AL,0AFH 10101111B,3、要求AL寄存器中的D0位和D1位变反,XOR AL,03H 00000011B,格式:SAL OPR,CNT ;算术左移指令SHL OPR,

45、CNT ;逻辑左移指令,功能:操作数左移m位,Shift Arithmetic Left,SHift logic Left,对于8086机型CNT为1或为CL 当要移多位时,移位位数 需存放在CL寄存器中。,2.3.2 移位指令,SAR OPR,CNT ;算术右移指令,Shift Arithmetic Left,移位指令根据移位后的结果影响SF、ZF、PF; 当移位位数为1时,移位后最高有效位发生变化 OF置1否则OF=0。当移位次数大于1时OF无定义,CF,高 低,操作数,2.3.3 循环移位指令,ROL OPR,CNT ;左循环移位指令 ROR OPR,CNT ;右循环移位指令,格式:,功

46、能:操作数左(或右)循环移CNT位,CNT是移位位数,为1或为CL,当要移多位时,移位位数需存放在CL寄存器中。,只影响标志CF和OF,Rotate lift ( Right ),RCL OPR,CNT ;带进位左循环移位指令 RCR OPR,CNT ;带进位右循环移位指令,带进位循环移位指令,格式:,例:编程,不用乘法指令将AL中的数乘以10,SAL AL ,1 ;AL中的数左移1位(2) MOV BL ,AL MOV CL ,2 SAL AL ,CL ;AL中的数左移2位(8) ADD AL ,BL ;AL中的数10,2.4 控制转移类指令,2.4.1 无条件转移指令,JMP,程序的位置由 代码段寄存器CS和程序 指针寄存器 IP确定,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报