收藏 分销(赏)

汇编程序设计王爽版分支.pptx

上传人:精*** 文档编号:4224261 上传时间:2024-08-26 格式:PPTX 页数:37 大小:338.73KB
下载 相关 举报
汇编程序设计王爽版分支.pptx_第1页
第1页 / 共37页
汇编程序设计王爽版分支.pptx_第2页
第2页 / 共37页
汇编程序设计王爽版分支.pptx_第3页
第3页 / 共37页
汇编程序设计王爽版分支.pptx_第4页
第4页 / 共37页
汇编程序设计王爽版分支.pptx_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、第4章汇编语言程序设计一、概述一、概述二、顺序程序设计二、顺序程序设计三、三、DOS系统功能调用系统功能调用四、分支程序设计四、分支程序设计五、循环程序设计五、循环程序设计六、串处理类指令六、串处理类指令4.3 DOS系统功能调用4.3.1 系统功能调用方法系统功能调用方法4.3.2 常用的常用的DOS系统功能调用系统功能调用4.3.1 系统功能调用方法DOS系统功能调用的方法一般可分为以下几步:系统功能调用的方法一般可分为以下几步:设置所要调用功能的入口参数。设置所要调用功能的入口参数。在在AH寄存器中存入所要调用功能的功能号。寄存器中存入所要调用功能的功能号。INT 21H指令自动转入中断

2、子程序入口。指令自动转入中断子程序入口。相应中断子程序运行完毕,可按规定取得出口参数。相应中断子程序运行完毕,可按规定取得出口参数。4.3.2 常用的DOS系统功能调用1 1不带回显的键盘单字符输入(不带回显的键盘单字符输入(8 8号功能)号功能)2.2.带回显的键盘单字符输入(带回显的键盘单字符输入(1 1号功能)号功能)3.3.单字符输出(单字符输出(2 2号功能)号功能)4.4.字符串显示(字符串显示(9 9号功能)号功能)5.5.字符串输入(字符串输入(0AH0AH号功能)号功能)7.7.程序正常返回系统程序正常返回系统1号系统功能调用(从键盘读入一个字符)功能:单字符输入。功能:单字

3、符输入。将将键键盘盘输输入入的的字字符符的的ASCIIASCII码码值值送送ALAL寄寄存存器器,同同时时回回显显在在屏屏幕幕上。上。入口参数:无入口参数:无出口参数:出口参数:ALAL寄存器存放输入字符的寄存器存放输入字符的ASCIIASCII码值码值格式:格式:MOV AHMOV AH,1 1INT 21HINT 21H说明:在输入一个字符后,不需要键入回车。若只键入回车,说明:在输入一个字符后,不需要键入回车。若只键入回车,则出口参数则出口参数ALAL得到的是回车符的得到的是回车符的ASCIIASCII码值码值0DH0DH。2号系统功能调用(显示一个字符)功功能能:单单字字符符输输出出。

4、即即将将以以DLDL寄寄存存器器内内容容为为ASCIIASCII码码值值的的ASCIIASCII字符输出到屏幕上。字符输出到屏幕上。入口参数:入口参数:DLDL要显示字符的要显示字符的ASCIIASCII码值码值出口参数:无出口参数:无格式:格式:MOV DLMOV DL,要显示的字符,要显示的字符MOV AH,2INT 21HINT 21H例:例:MOV DLMOV DL,41H 41H ;MOV DLMOV DL,AAMOV AHMOV AH,2 2INT 21HINT 21H屏幕上输出字符屏幕上输出字符“A”A”说明:掌握说明:掌握P104P104的回车和换行符的使用。的回车和换行符的使

5、用。4.4 分支程序设计4.4.1 无条件、条件转移指令无条件、条件转移指令4.4.2 分支程序设计分支程序设计4.4.3 用跳转表实现多分支程序设计用跳转表实现多分支程序设计分支分支控制转移类控制转移类指令通过改变指令通过改变IP(和(和CS)值,实值,实现程序执行顺序的改变,是仅次于传送指令的最常现程序执行顺序的改变,是仅次于传送指令的最常用指令,要求很好掌握用指令,要求很好掌握一、无条件转移指令JMP指令分成指令分成4种类型:种类型:段内段内直接直接转移转移 段内段内间接间接转移转移 段间段间直接转移直接转移 段间间接转移段间间接转移JMP labelJMP labelJMPJMP格式:

6、格式:程序转向程序转向labellabel标号指定的地址处执行标号指定的地址处执行 功能:功能:说明:说明:目标地址的范围:段内段内转移段内转移近转移近转移(near)n在在当当前前代代码码段段64KB范范围围内内转转移移(32KB范围)范围)段内转移段内转移短转移短转移(short)n转转移移范范围围当当前前代代码码段段127B范范围围内转移内转移n不不需需要要更更改改CS段段地地址址,只只要要改改变变IP偏移地址偏移地址代代码码段段代代码码段段JMPJMP目标地址的范围:段间段间转移段间转移远转移(远转移(far)n从从当当前前代代码码段段跳跳转转到到另另一一个个代代码码段,可以在段,可以

7、在1MB范围范围n需要需要更改更改CS段地址和段地址和IP偏移地址偏移地址n目目标标地地址址必必须须用用一一个个32位位数数表表达达,叫做叫做32位远指针位远指针。代代码码段段代代码码段段 实实际际编编程程时时,汇汇编编程程序序会会根根据据目目标标地地址址的的距距离离,自动处理自动处理成短转移、近转移或远转移成短转移、近转移或远转移 程序员可用操作符程序员可用操作符short、near ptr 或或far ptr 强制强制JMPJMP直接直接n转转移移地地址址象象立立即即数数一一样样,直直接接出出现现在指令中在指令中间接间接n转移地址转移地址在在寄存器寄存器或或主存单元主存单元中中用标号表达用

8、标号表达用寄存器或存储器用寄存器或存储器操作数表达操作数表达JMPJMPJMPJMP段内直接转移JMP labelJMP label;IPIP+IPIP+位移量位移量位位移移量量是是紧紧接接着着JMP指指令令后后的的那那条条指指令令的的偏偏移移地地址,到目标指令的偏移地址的地址位移。址,到目标指令的偏移地址的地址位移。当当向向地地址址增增大大方方向向转转移移时时,位位移移量量为为正正;向向地地址址减小方向减小方向转移时,位移量为转移时,位移量为负负 jmp jmp output output ;转移到;转移到outputoutput处继续执行处继续执行 output:output:mov re

9、sult,almov result,al;标号;标号outputoutput的指令的指令段内间接转移JMP r16/m16JMP r16/m16 ;IPr16/m16IPr16/m16将将一一个个1616位位寄寄存存器器或或主主存存字字单单元元内内容容送送入入IPIP寄寄存存器,作为新的指令指针。器,作为新的指令指针。jmp axjmp ax;IPAXIPAXjmp word ptr 2000hjmp word ptr 2000h;IP2000hIP2000h段间直接转移JMP JMP far ptrfar ptr label label;IPlabelIPlabel的偏移地址的偏移地址;CS

10、labelCSlabel的段地址的段地址将将标标号号所所在在段段的的段段地地址址作作为为新新的的CS值值,标标号号在在该该段段内内的的偏偏移移地地址址作作为为新新的的IP值值;这这样样,程程序序跳跳转转到新的代码段执行到新的代码段执行jmp jmp far ptrfar ptr otherseg otherseg;远转移到另一代码段的;远转移到另一代码段的othersegotherseg处处JMPJMP段间间接转移JMP JMP far ptrfar ptr mem mem;IPmemIPmem,CSmem+2CSmem+2用用一一个个双双字字存存储储单单元元表表示示要要跳跳转转的的目目标标地

11、地址址。这这个个目目标标地地址址存存放放在在主主存存中中连连续续的的两两个个字字单单元元中中,低低位字位字送送IPIP寄存器,寄存器,高位字高位字送送CSCS寄存器寄存器注意:此处的操作数只能是存储器操作数注意:此处的操作数只能是存储器操作数mov word ptr bx,0mov word ptr bx,0mov word ptr bx+2,1500hmov word ptr bx+2,1500hJMP dword ptr bx JMP dword ptr bx ;转移到;转移到1500:0h1500:0hJMPJMP二、条件转移指令功功能能:指指定定的的条条件件cc如如果果成成立立,程程序

12、序转转移移到到由由标标号号label指指定定的的目目标标地地址址去去执执行行指指令令;条条件件不不成成立立,则则程程序序将将顺顺序序执执行下一条指令行下一条指令说明:(说明:(1)Jcc(2)操作数操作数label是采用是采用段内短转移段内短转移(3)Jcc指令不影响标志,但要利用标志指令不影响标志,但要利用标志Jcc labelJcc label格式:格式:Jcc指令的分类指令的分类根据利用的标志位不同,根据利用的标志位不同,16条指令分成条指令分成3种情况:种情况:1.判断判断单个标志位单个标志位状态状态2.比较比较无符号数无符号数高低高低3.比较比较有符号数有符号数大小大小1.判断单个标

13、志位状态这组指令单独判断这组指令单独判断5个状态标志之一个状态标志之一JZ/JE和和JNZ/JNE:利利用用零零标标志志ZF,判判断断结结果果是是否否为为零零(或或相相等等)。JZ/JE表表示示结结果果为为零(或相等),则转移。零(或相等),则转移。JS和和JNS:利利用用符符号号标标志志SF,判判断断结结果果是是正是负,正是负,JS表示结果为负则转移。表示结果为负则转移。JO和和JNO:利利用用溢溢出出标标志志OF,判判断断结结果果是是否产生溢出,否产生溢出,JO表示溢出则转移。表示溢出则转移。JP/JPE和和JNP/JPO:利利用用奇奇偶偶标标志志PF,判判断断结结果果中中“1”的的个个数

14、数是是偶偶是是奇奇。JP表表示示偶偶个个数个数个1JC和和JNC:利利用用进进位位标标志志CF,判判断断结结果果是是否进位或借位。进位或借位为否进位或借位。进位或借位为1则转移。则转移。JccJcc例题例题例题例题例题例题例题例题例题例题比较无符号数高低无符号数高低有无符号数高低有4种关系:种关系:高于高于(不低于等于):(不低于等于):JA(JNBE)高于等于(不低于):高于等于(不低于):JAE(JNB)低于低于(不高于等于):(不高于等于):JB(JNAE)低于等于(不高于):低于等于(不高于):JBE(JNA)JccJcc例:比较无符号数例:比较无符号数比比较较无无符符号号数数大大小小

15、,将将较较大大的的数数存存放放AX寄寄存存器器。cmp ax,bxcmp ax,bx;比较;比较axax和和bx,(AX)-(BX)bx,(AX)-(BX)jae nextjae next;若;若axaxbxbx,转移,转移xchg ax,bxxchg ax,bx;若;若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的无符号数无符号数比较有符号数大小两数的大小分成两数的大小分成4种关系:种关系:大于大于(不小于等于):(不小于等于):JG(JNLE)大于等于(不小于):大于等于(不小于):JGE(JNL)小于小于(不大于等于):(不大于等于):JL(JNG

16、E)小于等于(不大于):小于等于(不大于):JLE(JNG)JccJcc例:比较有符号数例:比较有符号数比较有符号数大小,将较大的数存放在比较有符号数大小,将较大的数存放在AX寄存器。寄存器。cmp ax,bxcmp ax,bx;比较;比较axax和和bxbxjge nextjge next;若;若axaxbxbx,转移,转移xchg ax,bxxchg ax,bx;若;若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的有符号数有符号数注意:根据数的不同选取不同的指令注意:根据数的不同选取不同的指令条件转移指令中的条件ccJccJcc 实际虽然指令只有实际

17、虽然指令只有16条,但却有条,但却有30个助记符个助记符 采用多个助记符,只是为了方便记忆和使用采用多个助记符,只是为了方便记忆和使用SF三、分支程序设计分分支支程程序序根根据据条条件件是是真真或或假假决决定定执执行行与与否否,判判断断的的条件是各种指令,条件是各种指令,单分支双分支多分支如如CMP、TEST等执行后形成的状态等执行后形成的状态标志与条件转移指令标志与条件转移指令Jcc联合可以实现分支控制。联合可以实现分支控制。用无条件转移指令用无条件转移指令JMP也可以实现分支控制。也可以实现分支控制。条条件件成成立立跳跳转转到到标标号号所所在在的的指指令令执执行行,否否则则顺顺序序执执行行

18、分分支支语语句句体体;注注意意:选选择择正正确确的的条条件件转转移移指指令令和和转移目标地址转移目标地址1、单重分支1、单分支【例例4.9】编程求编程求XY,结果存于结果存于RESULT单元中,单元中,设设X和和Y都为都为16位数。位数。DATA SEGMENTX DW -10Y DW 20RESULT DW?DATA ENDSSTACK SEGMENT STACKDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,X SUB AX,Y JNS

19、NONNEG NEG AXNONNEG:MOV RESULT,AX MOV AH,4CH INT 21HCODE ENDS END START2、双分支程序设计条条件件成成立立跳跳转转执执行行第第2个个分分支支语语句句体体,否否则则顺顺序序执执行行第第1个个分分支支语语句句体体。注注意意第第1个个分分支支体体后后一一定定要要有有一一个个JMP指指令令跳跳到到第第2个分支体后个分支体后2、双分支程序设计【例4.10】显示BX的最高位,用DL作标志第一种方法第一种方法 shl bx,1jnc onemov dl,1jmp twoone:mov dl,0 two:mov ah,2int 21h mo

20、v dl,0shl bx,1jnc twomov dl,1two:mov ah,2int 21h第二种方法第二种方法提示:条件转移指令的使用很关键,要根据不同的情况正确的选用提示:条件转移指令的使用很关键,要根据不同的情况正确的选用多个条件对应各自的分支语句体,多个条件对应各自的分支语句体,哪个条件成立就转入相应哪个条件成立就转入相应分支体执行分支体执行。多分支可以化解为双分支或单分支结构的组合。多分支可以化解为双分支或单分支结构的组合3、多分支结构AH=0fuction0YNAH=1fuction1YNAH=2fuction2YN【例例4.11】编写计算下面函数值的程序:编写计算下面函数值的

21、程序:1X0Y=0X=0 -1X0设设输输入入数数据据为为X、输输出出数数据据Y,且且皆皆为为字字节节变变量量。程序流程图如图所示。程序流程图如图所示。3、多分支图图 分支运算分支运算程序流程图程序流程图DATA SEGMENTX DB -10Y DB?DATA ENDSSTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATA MOV DS,AX CMP X,0 ;与;与0进行比较进行比较 JGE A1 ;X0转转A1 MOV Y,-1 ;X 0时,时,-1Y JMP EXITA1:JGA2 ;X0转转A2 MOV Y,0 ;X=0时,时,0Y JMP EXITA2:MOV Y,1 ;X0,1Y EXIT:MOV AH,4CH INT 21H CODE ENDS END START

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服