第六章汇编语言及其程序设计课件

上传人:我*** 文档编号:144727504 上传时间:2020-09-13 格式:PPT 页数:133 大小:1.05MB
返回 下载 相关 举报
第六章汇编语言及其程序设计课件_第1页
第1页 / 共133页
第六章汇编语言及其程序设计课件_第2页
第2页 / 共133页
第六章汇编语言及其程序设计课件_第3页
第3页 / 共133页
第六章汇编语言及其程序设计课件_第4页
第4页 / 共133页
第六章汇编语言及其程序设计课件_第5页
第5页 / 共133页
点击查看更多>>
资源描述

《第六章汇编语言及其程序设计课件》由会员分享,可在线阅读,更多相关《第六章汇编语言及其程序设计课件(133页珍藏版)》请在金锄头文库上搜索。

1、第六章 汇编语言及其程序设计,主要内容,汇编程序及其开发过程 指令格式及寻址方式 8086汇编语言的基本语法 顺序、分支、循环结构程序设计 子程序设计,汇编语言程序及开发过程,基本概念 汇编语言:是一种面向机器的程序设计语言,它是机器语言的符号化描述。 特点:代码短、空间省、效率高 汇编语言源程序:用汇编语言编写的程序 目标程序:汇编语言经翻译程序翻译成的代码程序(即机器语言的程序)。 汇编程序:把源程序转变为相应目标程序的翻译程序,宏汇编:不仅包含一般汇编语言的功能,而且采用了高级语言使用的数据结构,是一种接近高级语言的汇编语言。 汇编语言程序的开发过程 编写源程序:EDIT(DOS),Te

2、xtPad(Windows) 将源程序保存为 XXXX.asm 文件 使用MASM生成目标程序 XXXX.OBJ 使用LINK生成可执行程序 XXXX.EXE,使用汇编语言的过程,基本汇编语言程序实例,(1) DATA SEGMENT (2) String DB 程序设计,”$” (3) DATA ENDS (4) CODE SEGMENT (5) ASSUME CS:CODE,DS:DATA,SS:STACK (6) START: MOV AX,DATA (7) MOV DS,AX (8) MOV DX,OFFSET String (9) MOV AH,9 (10) INT 21H (11)

3、 MOV AX,4C00H (12) INT 21H (13) CODE ENDS (14) STACK SEGMENT STACK (15) DB 256 DUP(?) (16) STACK ENDS (17) END START,AH = 9 功能:显示字符串 DS:DX = 串地址 字符串以“$”结尾,AH = 4C 功能:带返回码终止 AL = 返回码,汇编语言程序 的开发过程,结构化程序设计 程序设计的基本步骤 分析问题 确定处理方案 确定具体操作步骤,绘制流程图 编写程序 调试并运行程序,得到预期结果 整理输出结果,写出有关文档资料,流程图的画法,指令格式及寻址方式,指令格式,操

4、作 码,操 作 数,OP CODE,D,W,0,1,2,7,形式1,OP CODE,D,W,0,1,2,7,形式2,OP CODE,D,W,0,1,2,7,形式3,DATA/DISP,DATA/DISP,12个字节,12个字节,MOD,REG,R / M,DATA/DISP,DATA/DISP,12个字节,12个字节,方向位,0:REG字段指出的寄存器为源操作数寄存器 1:REG字段指出的寄存器为目的操作数寄存器,字位,0:参加运算的操作数为字节操作数 1:参加运算的操作数为字操作数,MOD字段编码表,REG字段编码表,MOD,R/M,8086/8088常用指令集 数据传送指令(14条),算术

5、运算指令(20条),逻辑运算指令(13条),字符串指令(10条),控制转移指令(28条),处理机控制指令(12条),寻址方式(重点) 概述 目的 大多数情况下,指令不直接给出操作数本身,而是给出存放操作数的寄存器或者是内存单元的地址。 大多数情况下,操作数地址也不是直接给出,而是给出计算操作数地址的方法,称之为寻址方式 寻址方式的种类 与数据有关的寻址方式(7种) 与转移地址有关的寻址方式(4种),MOV指令(简介) 指令格式 mov 目的,源 功能:该指令将源内容送至目的地址内 例: mov ax, bx 将寄存器bx中的内容送到寄存器ax中,与数据有关的寻址方式 立即寻址方式 操作数直接存

6、放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。 立即数可以是8位的或者16位的。(386之后的机器也可以是32位的) 立即数方式用来表示常数,它经常用来给寄存器赋初值。只能用于源操作数字段,不能用于目的操作数字段,且源操作数长度应与目的操作数长度一致。,立即数寻址方式举例 MOV AL, 5 - 指令执行后(AL)= 05H MOV AX, 3064H - 指令执行后(AX)= 3064H,寄存器寻址 操作数在寄存器中,指令中指定寄存器号。 16位的操作数,寄存器可以是 AX,BX,CX,DX,SI,DI,SP,BP。 8位的操作数,寄存器可以是 AH,

7、AL,BH,BL,CH,CL,DH,DL。,例: MOV AX , BX,指令执行前: (AX)= 3064H (BX)= 1234H,指令执行后: (AX)= 1234H (BX)= 1234H,这种方式中,不需要访问存储器来取得操作数, 所以这种方式可以得到较高的运算速度,操作数的地址,段地址,偏移地址,+,8086/8088段寄存器和相应存放偏移地址的寄存器之间的默认组合,16位寻址是有效地址的三种成分的组成,直接寻址方式 操作数的有效地制只包含位移量一种成分,其值就存放在代码段中指令的操作码之后。位移量的值就是操作数的有效地址。,例: MOV AX , 2000H,假设(DS)= 30

8、00H,物理地址 = 3000H * 16 +2000H = 32000H,假设(32000H)= 3050H,则指令执行后,AX = 3050H,可以用符号来代替数值地址 MOV AX , VALUE MOV AX , VALUE 如果在附加段,则应指定段前缀 MOV AX , ES:VALUE MOV AX , ES:VALUE,直接寻址方式只适用于处理单个变量。例如某个存放在 存储器中的变量,可以用直接寻址方式先把变量取出送 到一个寄存器中,然后再做进一步的处理,寄存器间接寻址方式 操作数的有效地址只包含基址寄存器或变址寄存器的内容。因此有效地址就在某个寄存器中,而操作数在存储器中。 1

9、6位寻址,可用的寄存器是BX,BP,SI,DI。 使用BX、SI、DI,其默认段是数据段DS 使用BP,其默认段是堆栈段SS,例:MOV AX , BX,如果(DS)= 2000H (BX)= 1000H,物理地址 = 2000H * 16 + 1000H = 21000H,如果(21000H)= 50A0H,指令执行后 AX = 50A0H,寄存器间接寻址方式可以用于表格处理,执行完一条指令后, 只需修改寄存器内容就可以取出表格的下一项。,寄存器相对寻址方式 操作数的有效地址为基址寄存器或变址寄存器的内容和指令中指定的位移量之和。,例:MOV AX , COUNTSI(也可以表示为 MOV

10、AX , COUNT+SI),如果(DS)= 3000H (SI)= 2000H COUNT = 3000H,物理地址 = 3000H * 16 + 2000H + 3000H = 35000H,如果(35000H)= 1234H,指令执行后 AX = 1234H,寄存器相对寻址方式同样可以用于表格的处理,表格的首地 址可设置为偏移量的地址,利用修改基址或变址寄存器中的 内容来取得表格中的值,基址变址寻址方式 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,例:MOV AX , BXDI(也可以表示为 MOV AX , BX+DI),如果(DS)= 2100H (BX)= 0158

11、H (DI)= 10A5H,物理地址 = 2100H * 16 + 0158H + 10A5H = 221FDH,如果(221FDH)= 1234H,指令执行后 AX = 1234H,基址变址寻址方式同样可以用于数组或表格的处理,表格的 首地址可存放在基址寄存器中,利用变址寄存器来访问数组 或表格中的元素,相对基址变址寻址方式 操作数的有效地址是一个基址寄存器与一个变址寄存器的内容和指令中指定的位移量之和。,例:MOV AX , MASKBXSI(也可以表示 为MOV AX , MASK+BX+SI),如果(DS)= 3000H (BX)= 2000H (SI)= 1000H MASK = 0

12、250H,物理地址 = 3000H * 16 + 2000H + 1000H + 0250H = 33250H,如果(33250H)= 1234H,指令执行后 AX = 1234H,相对基址变址寻址方式常用于二维数组的寻址,如存储器中存 放着由多个记录组成的文件,则位移量可以指向文件之首,基 址寄存器指向某个记录,变址寄存器则指向该记录中的一个元 素,与转移地址有关的寻址方式 目的 确定转移指令(条件转移指令、无条件转移指令)及转子指令(CALL)的转向地址 当转移发生在段内的时候,给出即将转移去执行的那条指令的偏移地址,并用该偏移地址取代IP寄存器中的内容 当转去执行的指令与原来执行的指令不

13、在同一段时,则还需要用新的代码段基址取代CS寄存器中原有的内容,种类 段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址,段内直接寻址 转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位位移量之和 无条件转移指令在位移量为8位的时候称为短跳转 JMP SHORT QUEST IP IP+8位位移量 无条件转移指令在位移量为16位的时候称为近跳转 JMP NEAR PTR PROGIA IP IP+16位位移量 特点 指令中的位移量是转向的有效地址与当前IP值之差,所以这一程序段在内存的不同区域运行时,转移指令本身不会发生变化,符合程序再定位的要求,段内间接转移 转向的有效地址是

14、一个寄存器或是一个存储单元的内容。 这个寄存器或者存储单元中的内容可以用除立即数以外的任何一种寻址方式获得 (IP)(EA),这种寻址方式和以下的两种寻址方式都不能用于条件转移指令。 即,条件转移指令只能使用段内直接寻址,而无条件转移指令 JMP和CALL可以使用四种寻址方式中的任何一种。,假设: (DS)= 2000H,(BX)= 1256H, (SI)= 528FH , 位移量 = 20A1H (232F7)= 3280H,(264E5H)= 2450H JMP BX 执行该指令后,(IP)= 1256H JMP TABLEBX 执行该指令后, (IP)= (DS)* 16 + (BX)+

15、 位移量) = (20000H + 1256H + 20A1H) = (232F7H)= 3280H JMP BXSI (IP)= (DS)* 16 + (BX)+ (SI) = (20000H + 1256H + 528H) = (264E5H)= 2450H,寄存器相对寻址方式,基址变址寻址方式,段间直接寻址 指令中直接提供了转向的段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段地址取代CS寄存器中的内容 完成的操作 JMP FAR PTR OPR (IP) OPR的段内偏移地址 (CS) OPR所在的段地址,段间间接寻址 用存储器中的两个相继字的内容

16、来取代IP和CS寄存器中的原始内容,以达到段间转移的目的。 存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式获得 完成的操作 JMP DWORD PTR OPR (IP) (EA) (CS) (EA+2) 例 JMP DWORD PTRBX+8 (BX)= 3706H,(DS)= 1000H 物理地址 = (DS)* 16 + (BX)+ 8 = 10000H + 3706H + 8 = 1370EH,指令执行后,(IP)= 67B2H,(CS)= 3305H,8086宏汇编语言的基本语法,汇编语句 指令性语句 经汇编之后,有目标程序与之对应,是有实际操作的语句。 一般指令性语句 一条指令性语句对应一条8086/8088机器指令 宏语句 该语句由伪操作符

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号