第5章汇编语言程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 汇编语言程序设计
第5章汇编语言程序设计
主要内容
顺序、分支、循环结构程序设计 子程序设计 转移指令、循环指令和子程序伪指令
第5章汇编语言程序设计
教学要求
掌握:
(1)分支程序的概念、结构和设计 (2)循环程序的概念、结构和设计 (3)子程序的概念、结构和设计
了解: 转移表法和地址表法多分支程序的设计原理;多
MOV AX,STACK
MOV SS,AX
MOV AL,X
;取数i
MOV AH,0
MOV BX,OFFSET SQTAB ;BX←表首 址
ADD BX,AX
Baidu Nhomakorabea
MOV AL,[BX]
;取i2并保存
MOV Y,AL
RET
SQRTSUB ENDP
CODE ENDS
END SQRTSUB
第5章汇编语言程序设计
5.2 分支程序设计
分支结构是一种非常重要的程序结构,也是实现程序 功能选择所必要的程序结构。
由于汇编语言需要用转移指令来实现分支结构,而转 移指令肯定会破坏程序的结构,所以,编写清晰的分 支结构是掌握该结构的重点。
计算机可根据不同条件进行逻辑判断,从而选择不同 的程序流向。程序的流向是由CS和IP值决定的,当程 序的转移仅在同一段内进行时,只需修改偏移地址IP 的值;如果程序的转移是在不同段之间进行的,则段 基址CS和偏移地址IP的值均需要修改。
TAPN DB 100 DUP (?) TOP EQU LENGTH TAPN
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
SQRTSUB PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
由表的存放规律可知:表首址SQTAB与X单元 中的数i之和,正是i2所在单元的地址。
第5章汇编语言程序设计
DATA SEGMENT ;数据段定义
SQTAB DB 0,1,4,9,16,25,36,49 ;平 方值表
X DB 5 Y DB ?
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
重循环程序的结构形式,内层循环与外层循环遵守的 层次结构规则,参数修改对各层的相互影响;汇编递 归程序方法。
第5章汇编语言程序设计
编制一个汇编语言程序的步骤
(1)分析题意,确定算法。 (2)根据算法,确定程序流程或画出程序框图。 (3)根据流程或框图编写程序。 (4)上机调试程序。
第5章汇编语言程序设计
第5章汇编语言程序设计
有条件转移指令的格式和类型
指令格式
指令说明
根据单个标志位的条件转移 指令
(1)有进位转移(JC)或无 进位转移(JNC)
(2)等于/为零转移(JE/JZ )或不等于/非零转移( JNZ)
(3)负数转移(JS)或正数 转移(JNS)
(4)溢出转移(JO)或不溢 出转移(JNO)
SET_CUR ENDP
这个程序段是顺序执行的,一条指令执行后 顺序执行紧接其后的另一条指令。
第5章汇编语言程序设计
【例】 设在X单元中存放一个0~7之间的整数,用查表法求出其平 方值,并将结果存入Y单元。
分析:根据题意,首先将0~7所对应的平方值 存入连续的8个单元中,构成一张平方值表,其 首地址为SQTAB。
5.1 顺序程序设计
顺序结构是最简单的程 序结构,程序的执行顺 序就是指令的编写顺序, 所以,安排指令的先后 次序就显得至关重要。
开始 S1 S2 … Sn
结束
第5章汇编语言程序设计
【例】 设置光标到屏幕左上角
SET_CUR PROC MOV AH,2 ;设置光标位置功能 MOV BH,0 ;页号 MOV DX,0 ;行DH,列DL INT 10H ;BIOS输出字符中断 RET
远转移属于段间转移,JMP指令不仅会把目标指令位 置处的偏移量赋值给指令指针寄存器,同时还会把目 标指令所处的代码段的段地址赋值给当前代码段寄存 器CS。
第5章汇编语言程序设计
有条件转移指令
有条件转移指令是一组及其重要的转移指令, 它根据标志寄存器中的一个(或多个)标志位 来决定是否需要转移,这就为实现多功能程序 提供了必要的手段
第5章汇编语言程序设计
5.2.1 转移指令
转移指令是汇编程序员经常要用到的一组指令。 在高级语言中,时常有“尽量不要使用转移指 令语句”的劝告。但是,在汇编语言程序中, 不但要使用转移指令,而且还要灵活运用,因 为指令系统中有大量的转移指令。
转移指令分为无条件转移指令和有条件转移指 令。
第5章汇编语言程序设计
第5章汇编语言程序设计
无条件转移指令JMP
JMP指令转移可以是短(short)转移(偏移量在[128B,127B]之内)、近(near)转移(偏移量在[32KB,32KB]之内)、远(far)转移(在不同的代码 段之间转移)。
短转移和近转移都是段内转移,JMP指令只将目标指 令位置处的偏移量赋值给指令指针寄存器IP,从而实 现转移功能
IP=IP+DISP
它转移的目标地址可 通过寄存器或存 储单元来寻址
IP=Reg16 或 P=Mem16
当一条无条件转移指 令中的地址表达 式是一个段间 (FAR)标号或段 间标号加减一常 量(必须在该标 号所在段内)时, 则该指令被汇编 成一个段间直接 转移指令代码
它转移的目标地址由存 储器寻址方式指定 的内存中的连续两 个字来决定,低地 址的字取代IP,高 地址的字取代CS
无条件转移指令JMP
无条件转移指令JMP指令是从程序当前执行的地方无条 件地转移到另一个地方执行。
指令格式
JMP 地址表达式
指令功能 4种方式
说明
功能
无条件地转移到由地址表达式所确定的目标单元,本指令对标志位无影响
段内直接转移
段内间接转移
段间直接转移
段间间接转移
这是一种相对寻址方 式。它转移的目 标地址是当前IP 内容加上一个8 位相对位移量 (DISP), DISP是 汇编程序在汇编 源程序时,根据 目标地址和当前 IP之间的距离自 动生成的
(5)偶校验转移(JP/JPE) 或奇校验转移(JNP/JPO )
(6)寄存器CX为零转移( JCXZ)
<指令助记符> <短标号>
当满足条件而发生转移的指令,称为条件转移指令。它们以某些 标志位或这些标志位的逻辑运算作为依据,若满足指令所规 定条件,则程序转移,否则顺序执行
第5章汇编语言程序设计
主要内容
顺序、分支、循环结构程序设计 子程序设计 转移指令、循环指令和子程序伪指令
第5章汇编语言程序设计
教学要求
掌握:
(1)分支程序的概念、结构和设计 (2)循环程序的概念、结构和设计 (3)子程序的概念、结构和设计
了解: 转移表法和地址表法多分支程序的设计原理;多
MOV AX,STACK
MOV SS,AX
MOV AL,X
;取数i
MOV AH,0
MOV BX,OFFSET SQTAB ;BX←表首 址
ADD BX,AX
Baidu Nhomakorabea
MOV AL,[BX]
;取i2并保存
MOV Y,AL
RET
SQRTSUB ENDP
CODE ENDS
END SQRTSUB
第5章汇编语言程序设计
5.2 分支程序设计
分支结构是一种非常重要的程序结构,也是实现程序 功能选择所必要的程序结构。
由于汇编语言需要用转移指令来实现分支结构,而转 移指令肯定会破坏程序的结构,所以,编写清晰的分 支结构是掌握该结构的重点。
计算机可根据不同条件进行逻辑判断,从而选择不同 的程序流向。程序的流向是由CS和IP值决定的,当程 序的转移仅在同一段内进行时,只需修改偏移地址IP 的值;如果程序的转移是在不同段之间进行的,则段 基址CS和偏移地址IP的值均需要修改。
TAPN DB 100 DUP (?) TOP EQU LENGTH TAPN
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
SQRTSUB PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
由表的存放规律可知:表首址SQTAB与X单元 中的数i之和,正是i2所在单元的地址。
第5章汇编语言程序设计
DATA SEGMENT ;数据段定义
SQTAB DB 0,1,4,9,16,25,36,49 ;平 方值表
X DB 5 Y DB ?
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
重循环程序的结构形式,内层循环与外层循环遵守的 层次结构规则,参数修改对各层的相互影响;汇编递 归程序方法。
第5章汇编语言程序设计
编制一个汇编语言程序的步骤
(1)分析题意,确定算法。 (2)根据算法,确定程序流程或画出程序框图。 (3)根据流程或框图编写程序。 (4)上机调试程序。
第5章汇编语言程序设计
第5章汇编语言程序设计
有条件转移指令的格式和类型
指令格式
指令说明
根据单个标志位的条件转移 指令
(1)有进位转移(JC)或无 进位转移(JNC)
(2)等于/为零转移(JE/JZ )或不等于/非零转移( JNZ)
(3)负数转移(JS)或正数 转移(JNS)
(4)溢出转移(JO)或不溢 出转移(JNO)
SET_CUR ENDP
这个程序段是顺序执行的,一条指令执行后 顺序执行紧接其后的另一条指令。
第5章汇编语言程序设计
【例】 设在X单元中存放一个0~7之间的整数,用查表法求出其平 方值,并将结果存入Y单元。
分析:根据题意,首先将0~7所对应的平方值 存入连续的8个单元中,构成一张平方值表,其 首地址为SQTAB。
5.1 顺序程序设计
顺序结构是最简单的程 序结构,程序的执行顺 序就是指令的编写顺序, 所以,安排指令的先后 次序就显得至关重要。
开始 S1 S2 … Sn
结束
第5章汇编语言程序设计
【例】 设置光标到屏幕左上角
SET_CUR PROC MOV AH,2 ;设置光标位置功能 MOV BH,0 ;页号 MOV DX,0 ;行DH,列DL INT 10H ;BIOS输出字符中断 RET
远转移属于段间转移,JMP指令不仅会把目标指令位 置处的偏移量赋值给指令指针寄存器,同时还会把目 标指令所处的代码段的段地址赋值给当前代码段寄存 器CS。
第5章汇编语言程序设计
有条件转移指令
有条件转移指令是一组及其重要的转移指令, 它根据标志寄存器中的一个(或多个)标志位 来决定是否需要转移,这就为实现多功能程序 提供了必要的手段
第5章汇编语言程序设计
5.2.1 转移指令
转移指令是汇编程序员经常要用到的一组指令。 在高级语言中,时常有“尽量不要使用转移指 令语句”的劝告。但是,在汇编语言程序中, 不但要使用转移指令,而且还要灵活运用,因 为指令系统中有大量的转移指令。
转移指令分为无条件转移指令和有条件转移指 令。
第5章汇编语言程序设计
第5章汇编语言程序设计
无条件转移指令JMP
JMP指令转移可以是短(short)转移(偏移量在[128B,127B]之内)、近(near)转移(偏移量在[32KB,32KB]之内)、远(far)转移(在不同的代码 段之间转移)。
短转移和近转移都是段内转移,JMP指令只将目标指 令位置处的偏移量赋值给指令指针寄存器IP,从而实 现转移功能
IP=IP+DISP
它转移的目标地址可 通过寄存器或存 储单元来寻址
IP=Reg16 或 P=Mem16
当一条无条件转移指 令中的地址表达 式是一个段间 (FAR)标号或段 间标号加减一常 量(必须在该标 号所在段内)时, 则该指令被汇编 成一个段间直接 转移指令代码
它转移的目标地址由存 储器寻址方式指定 的内存中的连续两 个字来决定,低地 址的字取代IP,高 地址的字取代CS
无条件转移指令JMP
无条件转移指令JMP指令是从程序当前执行的地方无条 件地转移到另一个地方执行。
指令格式
JMP 地址表达式
指令功能 4种方式
说明
功能
无条件地转移到由地址表达式所确定的目标单元,本指令对标志位无影响
段内直接转移
段内间接转移
段间直接转移
段间间接转移
这是一种相对寻址方 式。它转移的目 标地址是当前IP 内容加上一个8 位相对位移量 (DISP), DISP是 汇编程序在汇编 源程序时,根据 目标地址和当前 IP之间的距离自 动生成的
(5)偶校验转移(JP/JPE) 或奇校验转移(JNP/JPO )
(6)寄存器CX为零转移( JCXZ)
<指令助记符> <短标号>
当满足条件而发生转移的指令,称为条件转移指令。它们以某些 标志位或这些标志位的逻辑运算作为依据,若满足指令所规 定条件,则程序转移,否则顺序执行