




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编程序设计分支PPT课件第4章汇编语言程序设计一、概述一、概述二、顺序程序设计二、顺序程序设计三、三、DOS系统功能调用系统功能调用四、分支程序设计四、分支程序设计五、循环程序设计五、循环程序设计汇编程序设计分支PPT课件4.3 DOS系统功能调用4.3.1 系统功能调用方法系统功能调用方法4.3.2 常用的常用的DOS系统功能调用系统功能调用汇编程序设计分支PPT课件4.3.1 系统功能调用方法DOS系统功能调用的方法一般可分为以下几步:系统功能调用的方法一般可分为以下几步: 设置所要调用功能的入口参数。设置所要调用功能的入口参数。 在在AH寄存器中存入所要调用功能的功能号。寄存器中存入所
2、要调用功能的功能号。 INT 21H指令自动转入中断子程序入口。指令自动转入中断子程序入口。 相应中断子程序运行完毕,可按规定取得出口参数。相应中断子程序运行完毕,可按规定取得出口参数。 汇编程序设计分支PPT课件4.3.2 常用的DOS系统功能调用1 1不带回显的键盘单字符输入(不带回显的键盘单字符输入(8 8号功能)号功能) 2. 2. 带回显的键盘单字符输入(带回显的键盘单字符输入(1 1号功能)号功能)3. 3. 单字符输出(单字符输出(2 2号功能)号功能)4. 4. 字符串显示(字符串显示(9 9号功能)号功能)5. 5. 程序正常返回系统程序正常返回系统汇编程序设计分支PPT课件
3、1号系统功能调用(从键盘读入一个字符)功能:单字符输入。功能:单字符输入。将键盘输入的字符的将键盘输入的字符的ASCIIASCII码值送码值送ALAL寄存器,同时寄存器,同时回显回显在屏在屏幕上。幕上。入口参数:无入口参数:无出口参数:出口参数:ALAL寄存器存放输入字符的寄存器存放输入字符的ASCIIASCII码值码值格式:格式:MOV AHMOV AH,1 1INT 21HINT 21H说明:在输入一个字符后,不需要键入回车。若只键入回车,说明:在输入一个字符后,不需要键入回车。若只键入回车,则出口参数则出口参数ALAL得到的是回车符的得到的是回车符的ASCIIASCII码值码值0DH0D
4、H。汇编程序设计分支PPT课件2号系统功能调用(显示一个字符)功能:单字符输出。即将以功能:单字符输出。即将以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屏幕上输出字符
5、屏幕上输出字符“A”A”汇编程序设计分支PPT课件4.4 分支程序设计4.4.1 无条件、条件转移指令无条件、条件转移指令4.4.2 分支程序设计分支程序设计分支分支控制转移类控制转移类指令通过改变指令通过改变IP(和(和CS)值,实值,实现程序执行顺序的改变,是仅次于传送指令的最常现程序执行顺序的改变,是仅次于传送指令的最常用指令,要求很好掌握用指令,要求很好掌握汇编程序设计分支PPT课件一、无条件转移指令JMP指令分成指令分成4种类型:种类型: 段内段内直接直接转移转移 段内段内间接间接转移转移 段间段间直接转移直接转移 段间间接转移段间间接转移JMP labelJMP label格式:格
6、式:程序转向程序转向labellabel标号指定的地址处执行标号指定的地址处执行 功能:功能:说明:说明:汇编程序设计分支PPT课件目标地址的范围:段内段内转移段内转移近转移近转移(near)n在当前在当前代码段代码段64KB范围内范围内转移转移( 32KB范围)范围)段内转移段内转移短转移短转移(short)n转移范围当前转移范围当前代码段代码段127B范范围内转移围内转移n不需要更改不需要更改CS段地址,段地址,只要改只要改变变IP偏移地址偏移地址代码段代码段代码段代码段汇编程序设计分支PPT课件目标地址的范围:段间段间转移段间转移远转移(远转移(far)n从当前代码段跳转到从当前代码段跳
7、转到另一个另一个代码代码段,可以在段,可以在1MB范围范围n需要需要更改更改CS段地址和段地址和IP偏移地址偏移地址n目标地址必须用一个目标地址必须用一个32位数表达,位数表达,叫做叫做32位远指针位远指针。代码段代码段代码段代码段 实际编程时,汇编程序会根据目标地址的距离,实际编程时,汇编程序会根据目标地址的距离,自自动处理动处理成短转移、近转移或远转移成短转移、近转移或远转移 程序员可用操作符程序员可用操作符short、near ptr 或或far ptr 强制强制汇编程序设计分支PPT课件直接直接n转移地址转移地址象立即数一样,象立即数一样,直接出现直接出现在指令中在指令中间接间接n转移
8、地址转移地址在在寄存器寄存器或或主存单元主存单元中中用标号表达用标号表达用寄存器或存储器用寄存器或存储器操作数表达操作数表达汇编程序设计分支PPT课件段内直接转移段内直接转移举例JMP r16/m16 JMP r16/m16 例如:例如: jmp jmp axaxjmp jmp word ptr 2000hword ptr 2000h 段内间接转移段内间接转移JMP label JMP label 例如:例如:jmpjmp output output output:output:mov result,almov result,alJMP far ptr label 例如:例如: ;IPlabe
9、l的偏移地址的偏移地址 ;CSlabel的段地址的段地址jmp far ptr otherseg段间直接转移段间直接转移;IPlabel的偏移地址的偏移地址JMP far ptr mem 例如:例如: 段间间接转移段间间接转移JMP far ptr bx汇编程序设计分支PPT课件二、条件转移指令功能:指定的条件功能:指定的条件cc如果成立,程序转移到由标号如果成立,程序转移到由标号label指指定的目标地址去执行指令;条件不成立,则程序将顺序执定的目标地址去执行指令;条件不成立,则程序将顺序执行下一条指令行下一条指令说明:(说明:(1) Jcc(2)操作数操作数label是采用段内短转移是采用
10、段内短转移(3) Jcc指令不影响标志,但要利用标志指令不影响标志,但要利用标志Jcc labelJcc label格式:格式: Jcc指令的分类指令的分类根据利用的标志位不同,根据利用的标志位不同,16条指令分成条指令分成3种情况:种情况:1. 判断判断单个标志位单个标志位状态状态2. 比较比较无符号数无符号数高低高低3 . 比较比较有符号数有符号数大小大小汇编程序设计分支PPT课件1. 判断单个标志位状态这组指令单独判断这组指令单独判断5个状态标志之一个状态标志之一JZ/JE和和JNZ/JNE:利用零标志:利用零标志ZF,判断结,判断结果是否为零(或相等)。果是否为零(或相等)。 JZ/J
11、E表示结果为表示结果为零(或相等),则转移。零(或相等),则转移。JS和和JNS:利用符号标志:利用符号标志SF,判断结果是,判断结果是正是负,正是负, JS表示结果为负则转移。表示结果为负则转移。JO和和JNO:利用溢出标志:利用溢出标志OF,判断结果是,判断结果是否产生溢出,否产生溢出, JO表示溢出则转移。表示溢出则转移。JP/JPE和和JNP/JPO:利用奇偶标志:利用奇偶标志PF,判,判断结果中断结果中“1”的个数是偶是奇。的个数是偶是奇。JP表示偶个表示偶个数个数个1JC和和JNC:利用进位标志:利用进位标志CF,判断结果是,判断结果是否进位或借位。进位或借位为否进位或借位。进位或
12、借位为1则转移。则转移。例题例题例题例题例题例题例题例题例题例题汇编程序设计分支PPT课件例:例:JZ/JNZ指令指令测试测试alal最高位,若为最高位,若为0 0,将,将0 0送入送入ah,ah,若为若为1 1,将,将-1-1送入送入ah ah test al,80htest al,80h;测试最高位;测试最高位jz next0jz next0;D7D70 0(ZFZF1 1),转移),转移mov ah,0ffhmov ah,0ffh;D7D71 1,顺序执行,顺序执行jmp donejmp done;无条件转向;无条件转向next0:next0:mov ah,0mov ah,0done:d
13、one:. test al,80htest al,80h ;测试最高位;测试最高位jnz next1jnz next1;D7D71 1(ZFZF0 0),转移),转移mov ah,0mov ah,0;D7D70 0,顺序执行,顺序执行jmp donejmp done;无条件转向;无条件转向next1:next1:mov ah,0ffhmov ah,0ffhdone:done: .汇编程序设计分支PPT课件例:例:JS/JNS指令指令;计算;计算|XY|(绝对值)(绝对值);X和和Y为为16位操作数位操作数,结果存入结果存入result单元单元mov ax,Xmov ax,Xsub ax,Ysu
14、b ax,Yjns nonnegjns nonnegneg axneg ax;negneg是求补指令是求补指令nonneg:nonneg: mov result,axmov result,ax汇编程序设计分支PPT课件例:例:JO/JNO指令指令;计算;计算XY;X和和Y为存放于为存放于X单元和单元和Y单元的单元的16位操作数位操作数;若溢出,则转移到;若溢出,则转移到overflow处理处理mov ax,Xmov ax,Xsub ax,Ysub ax,Yjo overflowjo overflow.;无溢出,结果正确;无溢出,结果正确overflow:overflow: .;有溢出处理;有溢
15、出处理汇编程序设计分支PPT课件例:例:JC/JNC指令指令;统计;统计BX中中1的个数的个数xor al,alxor al,al;ALAL0 0,CFCF0 0again:again:test bx,test bx,0ffffh 0ffffh ;等价于;等价于 cmp bx,0cmp bx,0je nextje nextshl bx,1shl bx,1jnc againjnc againinc alinc aljmp againjmp againnext:next:.;ALAL保存保存1 1的个数的个数另一种做法另一种做法汇编程序设计分支PPT课件统计统计BX中中“1”的个数的个数xor a
16、l,alxor al,al;ALAL0 0,CFCF0 0again:again:cmp bx,0cmp bx,0jz nextjz nextshl bx,1shl bx,1;也可使用;也可使用 shr bx,1shr bx,1adc al,0adc al,0jmp againjmp againnext:next:.;ALAL保存保存1 1的个数的个数汇编程序设计分支PPT课件比较无符号数高低无符号数高低有无符号数高低有4种关系:种关系:高于高于(不低于等于):(不低于等于): JA ( JNBE )高于等于(不低于):高于等于(不低于): JAE (JNB)低于低于(不高于等于):(不高于等
17、于):JB(JNAE)低于等于(不高于):低于等于(不高于):JBE(JNA)汇编程序设计分支PPT课件例:比较无符号数例:比较无符号数比较无符号数大小,将较大的数存放比较无符号数大小,将较大的数存放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保存较大的保存较大的无符号数无符号数汇编程序设计分支PPT课件比较有符号数大小两数的大小
18、分成两数的大小分成4种关系:种关系:大于大于(不小于等于):(不小于等于): JG ( JNLE )大于等于(不小于):大于等于(不小于): JGE (JNL)小于小于(不大于等于):(不大于等于):JL(JNGE)小于等于(不大于):小于等于(不大于):JLE(JNG)汇编程序设计分支PPT课件例:比较有符号数例:比较有符号数比较有符号数大小,将较大的数存放在比较有符号数大小,将较大的数存放在AX寄存器。寄存器。 cmp ax,bxcmp ax,bx;比较;比较axax和和bxbxjge nextjge next;若;若axaxbxbx,转移,转移xchg ax,bxxchg ax,bx;若
19、;若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的有符号数有符号数注意:根据数的不同选取不同的指令注意:根据数的不同选取不同的指令汇编程序设计分支PPT课件条件转移指令中的条件cc 实际虽然指令只有实际虽然指令只有16条,但却有条,但却有30个助记符个助记符 采用多个助记符,只是为了方便记忆和使用采用多个助记符,只是为了方便记忆和使用SF汇编程序设计分支PPT课件三、分支程序设计分支程序根据条件是分支程序根据条件是真或假真或假决定执行与否,判断的决定执行与否,判断的条件是各种指令,条件是各种指令,单分支双分支多分支如如CMP、TEST等执行后形成的状态等
20、执行后形成的状态标志与条件转移指令标志与条件转移指令Jcc联合可以实现分支控制。联合可以实现分支控制。用无条件转移指令用无条件转移指令JMP也可以实现分支控制。也可以实现分支控制。汇编程序设计分支PPT课件条件成立条件成立跳转到标号所在的指跳转到标号所在的指令执行令执行,否则,否则顺序执行分支语句顺序执行分支语句体体;注意:选择注意:选择正确的条件转移指正确的条件转移指令令和和转移目标地址转移目标地址1、 单重分支汇编程序设计分支PPT课件1、 单分支【例【例4.9 】编程求编程求XY,结果存于结果存于RESULT单元中,单元中,设设X和和Y都为都为16位数。位数。DATA SEGMENTX
21、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 NONNEG NEG AXNONNEG: MOV RESULT,AX MOV AH,4CH INT 21HCODE ENDS END START汇编程序设计分支PPT课件2、双分支程序设计条件成立跳转执行第条件成立跳转执行第2个分支语句体,否则顺个分支语句体,否则顺序执行第序执行第1个分支语句体。个分支语句体。注意第注意第1个分支体后一定个分支体后一定要有一个要有一个JMP指令指令跳到跳到第第2个分支体后个分支体后汇编程序设计分支PPT课件2、双分支程序设计【例4.10】 显示BX的最高位 shl bx,1jnc onemov dl,1jmp twoone: mov dl,0 two: mov ah,2int 21h提示:条件转移指令的使用很关键,要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全媒体运营师内容创新试题及答案
- 夏季四防培训课件
- Unit 4 Friends Lesson 4 (教学设计)-2024-2025学年人教精通版(2024)英语三年级上册
- 3 做个“开心果”(教学设计)2023-2024学年统编版道德与法治二年级下册001
- 大学生创业卖零食
- 2025管理工作总结
- 2023七年级道德与法治上册 第一单元 成长的节拍第三课 发现自己第2框 做更好的自己教学实录 新人教版
- 2025年简易劳动合同模板下载
- Module 9 Unit 2 I bumped my head (教学设计)-2024-2025学年外研版(一起)英语四年级上册
- 党支部基础知识培训
- 2024春期国开电大专本科《劳动与社会保障法》在线形考(形考任务一)试题及答案
- 【知识点梳理】部编版语文六年级下册第一单元学习力提升知识点名师梳理
- python程序设计-说课
- 【数学】分类变量与列联表-2023-2024学年高二数学 人教A版2019选择性必修第三册
- 国家电网智能化规划总报告
- 石油勘探与开采的环境保护措施
- 中文学术简历模板
- 2024年苏州职业大学高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 王者荣耀主播培训方案
- ERT基础-ERT概论课件
- 《将军胡同》阅读试题及答案
评论
0/150
提交评论