(精品)汇编语言顺序结构程序.ppt
《(精品)汇编语言顺序结构程序.ppt》由会员分享,可在线阅读,更多相关《(精品)汇编语言顺序结构程序.ppt(147页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章顺序结构程序顺序结构程序教学重点 从从本本章章开开始始,从从程程序序结结构构角角度度展展开开学学习习8086常常用用指指令令的的功功能能及及应应用用。本本章章重重点点掌掌握:握:80 x86 传传送送、算算术术运运算算、逻逻辑辑操操作作、移移位操作位操作等指令等指令程序设计的步骤程序设计的步骤程序的基本控制结构程序的基本控制结构主要内容5.1 5.1 程序设计的步骤程序设计的步骤5.2 5.2 流程图的应用流程图的应用5.3 5.3 程序的基本控制结构程序的基本控制结构5.4 5.4 数据传送指令数据传送指令5.5 5.5 算术运算指令算术运算指令5.6 5.6 逻辑操作指令逻辑操作指令
2、5.7 5.7 移位操作指令移位操作指令5.8 5.8 状态标志位操作指令状态标志位操作指令5.9 5.9 简单的简单的I/OI/O功能调用功能调用5.10 5.10 顺序结构程序举例顺序结构程序举例第5章5.1 程序设计的步骤 1.1.分析问题分析问题2.2.建立数学模型建立数学模型3.3.设计算法设计算法4.4.编制程序编制程序5.5.上机调试上机调试第5章5.2 流程图的应用(1)(1)流程线流程线(2)(2)端点框端点框 (3)(3)判断框判断框(4)(4)处理框处理框(5)(5)连接框连接框条件条件YN开始开始结束结束要描述的内容要描述的内容第5章顺序结构初始化部分初始化部分工作部分
3、工作部分修改部分修改部分开始开始结束结束第5章分支与循环结构结束结束设置数据段地址设置数据段地址设置数据指针设置数据指针AL 第一个数据第一个数据(指针指针)=0FFH?保存结果保存结果YN11AL(指针)?(指针)?AL (指针)(指针)指针增量指针增量NY开始开始第5章5.3 程序的基本控制结构S1S2S3S2S1YN条件=真S1条件=真NY条件=真S1S2YN(1)顺序结构(2)分支(选择)结构(3)循环(迭代)结构第5章5.3.1 顺序程序设计顺顺序序程程序序完完全全按按指指令令书书写写的的前前后后顺顺序序执执行行每每一一条条指指令令,是是最最基基本本、最最常常见见的的程程序序结结构。
4、构。ssegsegment stack;定义堆栈段定义堆栈段dw 512 dup(?);堆栈段有堆栈段有512字(字(1024字节)空间字节)空间ssegends;堆栈段结束堆栈段结束dsegsegment;定义数据段定义数据段string db Hello,Everybody!,0dh,0ah,$dsegendscodesegment;code;定义代码段定义代码段assume cs:code,ds:dseg,ss:ssegstart:mov ax,dseg;建立建立DS段地址段地址mov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00
5、hint 21h;利用功能调用返回利用功能调用返回DOScodeends;代码段结束代码段结束end start;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点第5章汇编语言指令格式(复习)由由4 4部分组成:部分组成:标号标号:指令助记符指令助记符 目的操作数目的操作数,源操作数源操作数;注释注释 标号表示该指令在主存中的逻辑地址标号表示该指令在主存中的逻辑地址 每个指令助记符就代表一种指令每个指令助记符就代表一种指令 目的和源操作数表示参与操作的对象目的和源操作数表示参与操作的对象 注释是对该指令或程序段功能的说明注释是对该指令或程序段功能的说明第5章指令操作数的表达(补充)r8
6、任意一个任意一个8位通用寄存器。位通用寄存器。AH AL BH BL CH CL DH DLr16任意一个任意一个16位通用寄存器。位通用寄存器。AX BX CX DX SI DI BP SPreg代表代表r8或或r16。seg段寄存器。段寄存器。CS DS ES SS第5章指令操作数的表达(补充)m8一一个个8位位存存储储器器操操作作数数单单元(所有主存寻址方式)。元(所有主存寻址方式)。m16一一个个16位位存存储储器器操操作作数数单元(所有主存寻址方式)。单元(所有主存寻址方式)。mem代表代表m8或或m16。第5章指令操作数的表达(补充)i8一个一个8位立即数位立即数i16一个一个16
7、位立即数位立即数imm代表代表i8或或i16dest目的操作数目的操作数src源操作数源操作数第5章数据传送是计算机中最基本、最重要的一种操作数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均除标志寄存器传送指令外,均不影响标志不影响标志位位数据传送指令共有数据传送指令共有1212条:条:重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA5.4 数据传送指令MOV PUSHPOP XCHGXLAT LEALDS LESL
8、AHF SAHFPUSHF POPF第5章MOV(move)传送指令汇编格式:MOV :MOV dest,srcdest,src 操作:将一个源操作数将一个源操作数(字节或字字节或字)传送到目传送到目标操作数中。标操作数中。dest(srcdest(src)受影响的状态标志位受影响的状态标志位:没有没有说明说明:指令中指令中destdest和和srcsrc不能同时为不能同时为存储器存储器操操作数作数;CSCS不能做为不能做为目标操作数目标操作数使用使用,段段寄存器寄存器之间之间不能互相传送不能互相传送,立即数立即数不能不能送入送入段寄存器段寄存器。第5章传送指令MOV(move)把把一一个个字
9、字节节或或字字的的操操作作数数从从源源地地址址传传送至目的地址送至目的地址MOV MOV reg/mem,immreg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存MOVMOV例题例题5.1MOV MOV reg/mem/seg,regreg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例题例题5.2MOV MOV reg/seg,memreg/seg,mem;主存送(段)寄存器;主存送(段)寄存器例题例题5.3MOV MOV reg/mem,segreg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存例题例题5.5第5章MOV指
10、令传送功能限制MOV也并非任意传送也并非任意传送立即数立即数段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第5章非法传送种种两个操作数的类型不一致两个操作数的类型不一致n例例如如源源操操作作数数是是字字节节,而而目目的的操操作作数是字;或相反数是字;或相反两个操作数不能都是存储器两个操作数不能都是存储器n传传送送指指令令很很灵灵活活,但但主主存存之之间间的的直直接传送却不允许接传送却不允许段寄存器的操作有一些限制段寄存器的操作有一些限制n段段寄寄存存器器属属专专
11、用用寄寄存存器器,对对他他们们的的操作能力有限操作能力有限示例示例示例示例示例示例示例示例示例示例示例示例 MOV(move)传送指令(思考)判断下列各条语句的对错:判断下列各条语句的对错:DATA DB 10H MOV SI,DATAMOV AX,CS MOV DS,1000HMOV BX,BXMOV AX,DLMOV DS,CSMOV SI,10H立即数立即数段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第5章堆栈操作指令堆堆栈栈是是一一个个“后后进进先先出
12、出FILOFILO”(或或说说“先先进进后后出出FILO”FILO”)的的主主存存区区域域,位位于于堆堆栈栈段段中中;SSSS段段寄寄存器存器记录其段地址记录其段地址堆堆栈栈只只有有一一个个出出口口,即即当当前前栈栈顶顶;用用堆堆栈栈指指针针寄存器寄存器SPSP指定指定栈栈顶顶是是地地址址较较小小的的一一端端(低端),栈底不变(低端),栈底不变第5章堆栈的操作堆堆栈栈只只有有两两种种基基本本操操作作:进进栈栈和和出出栈,对应两条指令栈,对应两条指令PUSH和和POPPUSHPUSH;进栈指令先使;进栈指令先使堆栈指针堆栈指针SPSP减减2 2,然后把一个字操然后把一个字操作数存入堆栈顶作数存入
13、堆栈顶部部POPPOP;出栈指令把栈顶;出栈指令把栈顶的一个字传送至指的一个字传送至指定的目的操作数,定的目的操作数,然后堆栈指针然后堆栈指针SPSP加加2 2说明说明:SS内容为段基址内容为段基址,偏移量由堆栈指针偏移量由堆栈指针SP指出。指出。PUSH指令的目标地址一定在当前堆栈中,操作数一定是指令的目标地址一定在当前堆栈中,操作数一定是16位的寄存器或存储器操作数。位的寄存器或存储器操作数。POP指令目标操作数也指令目标操作数也只能是只能是16位的存储器或寄存器操作数位的存储器或寄存器操作数(CS除外除外)。第5章进栈指令PUSHpush axpush axpush 2000hpush
14、2000hPUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/segPUSHPUSH第5章PUSH 指令(举例)假定假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是:则执行下列指令后堆栈的状态是:PUSH AXPUSH BX第5章PUSH AXPUSH BX假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是PUSH 指令(举例)第5章出栈指令POPpop axpop axpop 2000hp
15、op 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2POPPOP第5章POP 指令(举例)思考:假定在执行指令:POP CX POP DX之前,堆栈的状态如图所示。指令执行后CX,DX的内容及堆栈的状态?CX=5678HDX=1234H第5章POP 指令(举例)思考:假定SI=1234H,DI=5678H,则右侧指令执行后,DS,ES的内容是?PUSHSIPUSHDIPOP DSPOP ESDS=5678HES=1234第5章堆栈的特点堆栈操作的单位是堆栈操作的单位是字字,进栈和出
16、栈只对,进栈和出栈只对字量字量字字量量数数据据从从栈栈顶顶压压入入和和弹弹出出时时,都都是是低低地地址址字节送字节送低字节低字节,高地址高地址字节送字节送高字节高字节堆堆栈栈操操作作遵遵循循先先进进后后出出原原则则,但但可可用用存存储储器器寻址方式随机存取堆栈中的数据寻址方式随机存取堆栈中的数据堆栈常用来堆栈常用来n临时存放数据临时存放数据n传递参数传递参数n保存和恢复寄存器保存和恢复寄存器n实现段更换实现段更换保存和恢复寄存器保存和恢复寄存器实现段更换实现段更换第5章交换指令XCHG(eXCHanGe)指令汇编格式:XCHG XCHG dest,srcdest,src 操作:destdest
17、的内容与的内容与srcsrc的内容互换。的内容互换。(dest)(srcdest)(src)受影响的状态标志位受影响的状态标志位:没有没有说明:destdest和和srcsrc不能同时为存储器操作数。不能同时为存储器操作数。段寄存器、立即数不能作为操作数。段寄存器、立即数不能作为操作数。第5章交换指令XCHG(exchange)把两个地方的数据进行互换把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGXCHGXCHG XCHG reg,reg/m
18、emreg,reg/mem;regreg reg/memreg/mem例题例题5.7例题例题5.6XCHG指令(举例与思考)XCHG AL,BLXCHG AL,10XCHG CL,BXXCHG BL,BX+SI+10XCHG AL,SIXCHG SI,BX+10XCHG AX,AXXCHG DX,DS判断下列各条语句的对错:判断下列各条语句的对错:第5章换码指令XLAT(translate)指令汇编格式:XLAT:XLAT操作:BX:BX和和ALAL内容之和指出的内存字节单元内容之和指出的内存字节单元的内容送到的内容送到ALAL中。中。AL(BX+AL)AL(BX+AL)受影响的状态标志位:没
19、有没有说明:XLAT:XLAT指令用于查表。表的开始地址即指令用于查表。表的开始地址即表头地址由表头地址由BXBX寄存器给出。寄存器给出。ALAL中的原中的原始值是要寻址的表中元素地址的位移始值是要寻址的表中元素地址的位移量量,规定表中第一个字节的位移量为规定表中第一个字节的位移量为0 0。这是一种特殊的基址变址寻址方式这是一种特殊的基址变址寻址方式,基基址寄存器为址寄存器为BX,BX,变址寄存器为变址寄存器为ALAL。第5章换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代码表格首地址表格首地址存放于存放于BXBX,
20、ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码换码指令XLAT(translate)将将BX指指定定的的缓缓冲冲区区中中、AL指指定定的的位位移移处的一个字节数据取出赋给处的一个字节数据取出赋给ALXLATXLATXLATXLAT;alds:bx+alalds:bx+al 例题例题5.8第5章思考题:如何用XLAT 实现加密 看如下的一种加密方式(替代加密):看如下的一种加密方式(替代加密):A B C D E F G H I J K L M N O P QY Z D M R N H
21、X J L I O Q U W A CR S T U V W X Y ZB E G F K P T S V明文:明文:THIS IS A COMPUTER密文:密文:GXJE JE Y DWQAFGRB第5章XLAT 应用举例(实现加密)JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T SUB AL,A MOV AH,0 ADD BX,AX MOV AL,BXXLATMOV AH,0ADD BX,AXMOV AL,BX第5章地址传送指令地地址址传传送送指
22、指令令将将存存储储器器单单元元的的逻逻辑辑地址送至指定的寄存器地址送至指定的寄存器n有效地址传送指令有效地址传送指令 LEAn指针传送指令指针传送指令 LDS和和LES注意不是获取存储器单元的内容注意不是获取存储器单元的内容第5章取有效地址LEA(load EA)指令汇编格式:L:LEAEA dest,srcdest,src操作:将指令中给出的存储器操作数的有效地将指令中给出的存储器操作数的有效地址址(即地址的偏移量即地址的偏移量)送到指定的寄存器中。送到指定的寄存器中。destEAdestEA受影响的状态标志位:没有没有说明:LEA:LEA指令是将源操作数地址的偏移量指令是将源操作数地址的偏
23、移量,即即有效地址传送到目标操作数中。源操作数必须有效地址传送到目标操作数中。源操作数必须是一个存储器操作数是一个存储器操作数,目标操作数可以是任一目标操作数可以是任一1616位通用寄存器、指针寄存器或变址寄存器位通用寄存器、指针寄存器或变址寄存器。LEALEA第5章有效地址传送指令LEA(load EA)将将存存储储器器操操作作数数的的有有效效地地址址传传送至指定的送至指定的16位寄存器中位寄存器中例题例题LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEALEALEA第5章LEA指令举例DATA1 DB 10H LEA BX,DATA1 MOV
24、 BX,OFFSET DATA1 MOV BX,1000H MOV DI,2000H LEA AX,BX+1243H LEA DX,BXDI+1234HAX=2243H,DX=4234H2243H41H42H30H.4234H30H第5章指针传送指令L LDSDS r16,mem r16,mem;r16memr16mem,;DSmem+2DSmem+2LDSLDS指指令令将将主主存存中中memmem指指定定的的字字送送至至r16r16,并并将将memmem的的下下一一字字送送DSDS寄存器寄存器L LESES r16,mem r16,mem;r16memr16mem,;ESmem+2ESmem
25、+2LESLES指指令令将将主主存存中中memmem指指定定的的字字送送至至r16r16,并并将将memmem的的下下一一字字送送ESES寄存器寄存器例题例题加载数据段寄存器加载数据段寄存器说明说明:将将mem指出的指出的连续两个字连续两个字的内容的内容,即一个即一个32位的指位的指针变量传送到一对针变量传送到一对16位的目标寄存器中。高位字为段基地位的目标寄存器中。高位字为段基地址址,低位字为偏移量低位字为偏移量,传送到由传送到由r16指出的一个通用寄存器、指出的一个通用寄存器、指针寄存器或变址寄存器中指针寄存器或变址寄存器中,但不能是段寄存器。但不能是段寄存器。加载附加段寄存器加载附加段寄
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 汇编语言 顺序 结构 程序
限制150内