汇编语言顺序结构程序

上传人:wm****3 文档编号:52217750 上传时间:2018-08-19 格式:PPT 页数:109 大小:1.61MB
返回 下载 相关 举报
汇编语言顺序结构程序_第1页
第1页 / 共109页
汇编语言顺序结构程序_第2页
第2页 / 共109页
汇编语言顺序结构程序_第3页
第3页 / 共109页
汇编语言顺序结构程序_第4页
第4页 / 共109页
汇编语言顺序结构程序_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《汇编语言顺序结构程序》由会员分享,可在线阅读,更多相关《汇编语言顺序结构程序(109页珍藏版)》请在金锄头文库上搜索。

1、第五章顺序结构程序教学重点从本章开始,从程序结构角度展开学 习8086常用指令的功能及应用。本章重点掌握: 80x86 传送、 算术运算、逻辑操作、 移位操作等指令 程序设计的步骤 程序的基本控制结构主要内容5.1 程序设计的步骤 5.2 流程图的应用 5.3 程序的基本控制结构 5.4 数据传送指令 5.5 算术运算指令 5.6 逻辑操作指令 5.7 移位操作指令 5.8 状态标志位操作指令 5.9 简单的I/O功能调用 5.10 顺序结构程序举例第5章5.1 程序设计的步骤 1. 分析问题 2. 建立数学模型 3. 设计算法 4. 编制程序 5. 上机调试第5章5.2 流程图的应用(1)

2、流程线 (2) 端点框 (3) 判断框 (4) 处理框 (5) 连接框条件YN开始结束要描述的内容第5章顺序结构初始化部分工作部分修改部分开始结束第5章分支与循环结构 结束设置数据段地址设置数据指针AL 第一个数据(指针)=0FFH?保存结果YN11AL(指针)?AL (指针)指针增量NY开始第5章5.3 程序的基本控制结构S1S2S3S2S1YN条件=真S1条件=真NY条件=真S1S2YN(1) 顺序结构(2) 分支(选择)结构(3) 循环(迭代)结构第5章5.3.1 顺序程序设计顺序程序完 全按指令书写 的前后顺序执 行每一条指令 ,是最基本、 最常见的程序 结构。ssegsegment

3、stack ;定义堆栈段 dw 512 dup(?);堆栈段有512字(1024字节)空 间 ssegends;堆栈段结束 dsegsegment;定义数据段 string db Hello, Everybody !,0dh,0ah,$ dsegends codesegment ;code;定义代码段 assume cs:code,ds:dseg,ss:sseg start: mov ax,dseg;建立DS段地址 mov ds,ax mov dx,offset string mov ah,9 int 21h mov ax,4c00h int 21h;利用功能调用返回DOS codeends;

4、代码段结束 end start;汇编结束,同时指明程序起始点第5章汇编语言指令格式(复习)由4部分组成:标号:指令助记符 目的操作数,源操作数;注释标号表示该指令在主存中的逻辑地址每个指令助记符就代表一种指令目的和源操作数表示参与操作的对象注释是对该指令或程序段功能的说明第5章指令操作数的表达(补充)r8任意一个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位存储器操作数 单元(所有主存寻址方式

5、)。 m16一个16位存储器操作 数单元(所有主存寻址方式)。 mem代表m8或m16。第5章指令操作数的表达(补充)i8一个8位立即数i16一个16位立即数imm代表i8或i16dest目的操作数src源操作数第5章数据传送是计算机中最基本、最重要的一种操作 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位数据传送指令共有12条:重点掌握MOV XCHG XLAT PUSH POP LEA5.4 数据传送指令MOV PUSH POP XCHG XLAT LEA LDS LES LAHF SAHF PUSHF POPF第5章MOV

6、(move)传送指令汇编格式: MOV dest,src 操作: 将一个源操作数(字节或字) 传送到目 标操作数中。dest(src) 受影响的状态标志位: 没有 说明: 指令中dest和src不能同时为存储器操 作数; CS不能做为目标操作数使用,段 寄存器之间不能互相传送,立即数不能 送入段寄存器。第5章传送指令MOV(move)把一个字节或字的操作数从源地址 传送至目的地址MOV reg/mem,imm;立即数送寄存器或主存MOVMOV例题5.1MOV reg/mem/seg,reg;寄存器送(段)寄存器或主存例题5.2MOV reg/seg,mem;主存送(段)寄存器例题5.3MOV

7、reg/mem,seg;段寄存器送寄存器或主存例题5.5第5章 例5.1:立即数传送mov al,4 ;al4,字节传送 mov cx,0ffh;cx00ffh,字传送 mov si,200h;si0200h,字传送 mov byte ptr si,0ah ;byte ptr 说明是字节操作 mov word ptr si+2,0bh ;word ptr 说明是字操作注意立即数是字节量还是字量明确指令是字节操作还是字操作MOVMOV第5章 例5.2:寄存器传送mov ax,bx ;axbx,字传送 mov ah,al ;ahal,字节传送 mov ds,ax ;dsax,字传送 mov si,

8、al;sial,字节传送MOVMOV第5章 例5.3:存储器传送mov al,bx mov dx,bp;dxss:bp mov es,si;esds:si不存在存储器向存储器的传送指令MOVMOV第5章 例5.5:段寄存器传送mov si,ds mov ax,es ;axes mov ds,ax ;dsaxes对段寄存器的操作有一些限制MOVMOV第5章MOV指令传送功能限制MOV也并非任意 传送立即数段寄存器 CS DS ES SS通用寄存器 AX BX CX DX BP SP SI DI存 储 器第5章非法传送种种两个操作数的类型不一致n例如源操作数是字节,而目 的操作数是字;或相反 两个

9、操作数不能都是存储器n传送指令很灵活,但主存之 间的直接传送却不允许 段寄存器的操作有一些限制n段寄存器属专用寄存器,对 他们的操作能力有限示例示例示例示例示例示例第5章两个操作数的类型要一致绝大多数双操作数指令,除非特别说明, 目的操作数与源操作数必须类型一致,否则 为非法指令 MOV AL,050AH ;非法指令:050Ah为字,而AL为字节 寄存器,本身有明确的字节或字类型,有寄 存器参与的指令其操作数类型就是寄存器的 类型 对于存储器单元与i8立即数同时作为操作 数的情况,必须显式指明;byte ptr指示字 节类型,word ptr指示字类型 mov si,0ah mov word

10、ptr si,0ah mov si,0a000h第5章两个操作数不能都是存储器8086指令系统不允许两个操作数都 是存储单元(除串操作指令),要实 现这种传送,可通过寄存器间接实现 mov ax,buffer1 ;axbuffer1(将buffer1内容送ax) mov buffer2,ax ;buffer2ax ;这里buffer1和buffer2是两个字变量 ;实际表示直接寻址方式第5章要小心段寄存器的操作不允许立即数传送给段寄存器 MOV DS,100H ;非法指令:立即数不能传送 段寄存器不允许直接改变CS值 MOV CS,SI ;不允许使用的 指令不允许段寄存器之间的直接数据传 送

11、MOV DS,ES ;非法指令:不允许段寄存器 间传送MOV(move)传送指令(思考)判断下列各条语句的对 错: DATA DB 10HMOV SI,DATAMOV AX,CS MOV DS,1000HMOV BX,BXMOV AX,DLMOV DS,CSMOV SI,10H立即数段寄存器 CS DS ES SS通用寄存器 AX BX CX DX BP SP SI DI存 储 器第5章堆栈操作指令堆栈是一个“后进先出 FILO”(或说“先进后出 FILO”)的主存区域,位 于堆栈段中;SS段寄存器 记录其段地址堆栈只有一个出口,即 当前栈顶;用堆栈指针寄 存器SP指定栈顶是地址较小的一端 (

12、低端),栈底不变第5章堆栈和队列堆栈:按照后进先 出(LIFO)的原则组 织的存储器空间( 栈)队列:按照先进先 出(FIFO)的原则组 织的存储器空间LIFOFIFO第5章堆栈的操作堆栈只有两种基本操作:进栈和 出栈,对应两条指令PUSH和POPPUSH ;进栈指令先使 堆栈指针SP减2, 然后把一个字操 作数存入堆栈顶 部POP ;出栈指令把栈顶 的一个字传送至指 定的目的操作数, 然后堆栈指针SP加2说明: SS内容为段基址,偏移量由堆栈指针SP指出。 PUSH 指令的目标地址一定在当前堆栈中,操作数一定是16 位的寄存器或存储器操作数。POP指令目标操作数也 只能是16位的存储器或寄存

13、器操作数(CS除外)。第5章进栈指令PUSHpush ax push 2000hPUSH r16/m16/seg ;SPSP2 ;SS:SPr16/m16/segPUSHPUSH第5章PUSH 指令(举例)假定AX=1234H,BX=5678H,SS=2000H, SP=0100H,则执行下列指令后堆栈的状态是:PUSH AX PUSH BX第5章PUSH AX PUSH BX假定AX=1234H,BX=5678H,SS=2000H, SP=0100H,则执行下列指令后堆栈的状态是PUSH 指令(举例)第5章出栈指令POPpop ax pop 2000hPOP r16/m16/seg ;r16

14、/m16/segSS:SP ;SPSP2POPPOP第5章POP 指令(举例)思考:假定在执行指令:POP CXPOP DX之前,堆栈的状态如图所示。指令执行 后CX,DX的内容及堆栈的状态?CX=5678HDX=1234H第5章POP 指令(举例)思考:假定 SI=1234H, DI=5678H,则右侧指令执行后, DS,ES的内容是?PUSHSI PUSHDI POP DS POP ESDS=5678HES=1234第5章堆栈的特点堆栈操作的单位是字,进栈和出栈只对字 量字量数据从栈顶压入和弹出时,都是低地 址字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储 器寻址方式

15、随机存取堆栈中的数据堆栈常用来n临时存放数据n传递参数n保存和恢复寄存器n实现段更换保存和恢复寄存器实现段更换第5章例:现场保护恢复push ax;进入子程序后 push bx push ds . pop ds;返回主程序前 pop bx pop ax第5章思考:如何实现段更换如何利用堆栈将 DS段更换到CS段 ?SP第5章段更换:PUSH DSSPDS原值第5章段更换:PUSH DSPUSH CSSPDS原值CS原值第5章SPDS原值CS原值段更换:PUSH DSPUSH CSPOP DSDS的内容与CS的相同第5章交换指令XCHG(eXCHanGe )指令汇编格式: XCHG dest,src 操作: dest的内容与src的内容互换。 (dest)(src) 受影响的状态标志位: 没有 说明: dest和src不能同时为存储器操作数。 段寄存器、立即数不能作为操作数。第5章交换指令XCHG(exchange)把两个地方的数据进行互换寄存器与寄存器

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

当前位置:首页 > 生活休闲 > 社会民生

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