第10章如何发挥主机内存各类寄存器(位)处理器的功能-汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第10章如何发挥主机内存各类寄存器(位)处理器的功能-汇编语言程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 如何 发挥 主机 内存 各类 寄存器 处理器 功能 汇编语言 程序设计 课件
- 资源描述:
-
1、10.1 概述w10.1.1 汇编语言程序设计的一般步骤w10.1.2 流程图返回本章首页返回本章首页10.1.1 汇编语言程序设计的一般步骤w汇编语言程序设计一般有以下几个步骤:w1分析问题,确定算法w2绘制流程图w3根据流程图编制程序w10调试程序返回本节返回本节10.1.2 流程图w1流程图的概念w流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。2流程图符号表示流程图符号表示(1)起止框:表示程序)起止框:表示程序的开始和结束。的开始和结束。开始开始结束结束w(2)判断框 条件件(3)处理框)处理
2、框 YNw(10)指向线 10.2 顺序程序设计w下面举例说明顺序程序的设计。w【例10.1】试编写一程序计算以下表达式的值。w=(v-(*+-5100)/xw式中x、v均为有符号字数据。w设、的值存放在字变量、V中,结果存放在双字变量之中,程序的流程图如图10.1所示。图图10.1 10.1 顺序运算程序流程图顺序运算程序流程图DXw源程序如下:wDATASEGMENTwXDW200wYDW100wZDW3000wVDW10000wWDW2 DUP(?)wDATAENDSwSTACKSEGMENT STACKw DB 200 DUP(0)wSTACKENDSwCODESEGMENTwASSU
3、ME DS:DATA,CS:CODE,SS:STACKwSTART:MOVAX,DATAwMOV DS,AX;DATAAXwMOV AX,X wIMUL Y;(X)*(Y)DX:AXwMOV CX,AXwMOV BX,DX;(DX:AX)(BX:CX)wMOV AX,ZwCWD;(Z)符号扩展wADDCX,AXwADCBX,DX;(BX:CX)+(DX:AX)(BX:CX)wSUBCX,5100wSBBBX,0;(BX:CX)-5100(BX:CX)wMOVAX,V wCWD;(V)符号扩展wSUB AX,CXwSBB DX,BX;(DX:AX)-(BX:CX)(DX:AX)wIDIV X;(
4、DX:AX)/XwMOV W,AX;商WwMOV W+2,DX;余数DXW+2wMOV AH,10CHwINT21HwCODEENDS;退出DOS 状态wEND START【例10.2 BX、AL与查表指令】w【例10.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:wSTACKSEGMENT STACKwDB 200 DUP(0)wSTACKENDSwDATASEGMENTwTABDB 80,85,86,71,79,96w DB 83,56,32,66,78。810wNO DB 10w
5、ENGLIST DB?wDATAENDSwCODESEGMENTw ASSUME DS:DATA,SS:STACK,CS:CODEwBEGIN:MOVAX,DATAwMOV DS,AXwLEA BX,TAB wMOV AL,NOwDEC ALwXLAT TABwMOV ENGLISH,ALwMOV AH,10CHwINT 21HwCODEENDSwENDBEGIN10.3 分支程序设计(标志寄存器与条件转移指令)返回本章首页返回本章首页测试某一次运算的结果ZF=1 JZ/JESF=1 JSOF=1 JOPF=1 JPCF=1 JC(JB,JNAE)比较两个无符号数(ASCII码)JB=JNAE
6、=JC(借位位)JL=JNGEJNLE=JG测试CX的值,等于0则转移JCXZ10.3 分支程序设计(标志寄存器与条件转移指令)w10.3.1 用条件转移指令实现程序分支w10.3.2 用跳转表实现多路分支返回本章首页返回本章首页10.3.1 用条件转移指令实现程序分支w【例10.3】编写计算下面函数值的程序:w 1 X0wY=0 X=0w -1 Xw设输入数据为X、输出数据Y,且皆为字节变量。程序流程图如图10.2所示。w程序如下:图图10.2 分支运算分支运算程序流程图程序流程图wDATASEGMENTwX DB -10wY DB?wDATAENDSwSTACKSEGMENT STACKw
7、 DB 200 DUP(0)wSTACKENDSwCODESEGMENTwASSUME DS:DATA,SS:STACK,CS:CODEwSTART:MOV AX,DATAw MOVDS,AXw CMPX,0;与0进行比较w JGEA1;X0转A1w MOVY,-1;X 0时,-1Yw JMPEXITwA1:JG A2;X0转A2w MOVY,0;X=0时,0Yw JMPEXITwA2:MOVY,1;X0,1Y wEXIT:MOVAH,10CHw INT 21H wCODE ENDSw ENDSTART图图10.2 分支运算分支运算程序流程图程序流程图XwDATASEGMENTwX DB -1
8、0wY DB?wDATAENDSwSTACKSEGMENT STACKw DB 200 DUP(0)wSTACKENDSwCODESEGMENTwASSUME DS:DATA,SS:STACK,CS:CODEwSTART:MOV AX,DATAw MOVDS,AXw CMPX,0w JLEA1w MOVY,1w JMPEXITwA1:JLA2w MOVY,0w JMPEXITwA2:MOVY,-1 wEXIT:MOVAH,10CHw INT21H wCODE ENDSw ENDSTART【例10.10】w【例10.10】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。w
9、设三个带符号数分别在三个字变量X、Y、Z中存储。程序流程图如图10.3所示 图图10.3例例10.10程序流程图程序流程图 w程序如下:wSTACSEGMENT STACKw DB 200 DUP(0)wSTACKENDSwDATASEGMENTwX DW 00ABHwY DW 5wZ DW 200wMAXDW?wDATAENDSwCODESEGMENTw ASSUME DS:DATA,SS:STACK,CS:CODE wSTART:MOVAX,DATAw MOVDS,AXw MOVAX,Xw CMPAX,Y;XY?w JGL1w MOVAX,Y;YZ?w CMPAX,Zw JGEXITwL2
10、:MOVAX,Zw JMPEXITw wL1:CMP AX,Z;XZ?w JLE L2wEXIT:MOV MAX,AXw MOVAH,10CHw INT 21HwCODEENDSw END START返回本节返回本节10.3.2 用跳转表实现多路分支(教材177页)w【例10.5】设某程序有8路分支,试根据给定的N值(18),将程序的执行转移到其中的一路分支。w程序流程如图10.10所示。w程序如下:wDATASEGMENTwTABDW P1,P2,P3,P10,P5,P6,P7,P8wN DB 5wDATAENDSwSTACKSEGMENTw DB 200 DUP(0)wSTACKENDSw
11、CODESEGMENTw ASSUME DS:DATA,SS:STACK,CS:CODE wSTART:MOV AX,DATAwMOV DS,AXwwMOV AL,NwDECALwADDAL,AL ;SHL ALwMOV BL,ALwMOV BH,0wJMPTABBX ;MOV AX,OFFSET TABADD BX,AXMOV AX,BXJMP AXwP1:wwJMPEXITwP2:wwJMPEXITwP2:wwJMPEXITwP3:ww JMPEXITwwP8:wwEXIT:MOV AH,10CHw INT 21HwCODEENDSw END STARTw上述程序中的无条件转移指令的转移地
12、址采用的是变址寻址。同理,转移地址也可以用寄存器间接寻址或基址加变址寻址,读者可自行考虑。返回本节返回本节10.10 循环程序设计w10.10.1 循环程序的结构w10.10.2 单重循环程序设计w10.10.3 多重循环程序设计返回本章首页返回本章首页10.10.1 循环程序的结构w1初始化部分w2循环体部分w3循环控制部分循环程序的常见结构形式如图10.5(a)、(b)所示。返回本节返回本节循环体循环体10.10.2 单重循环程序设计w1计数控制w2条件控制1计数控制w【例10.7】已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。w显然,每个元素为一个8位有符号二
13、进制数,统计其中正元素的个数可用循环程序实现。其程序流程图如图10.6所示。图图10.6 程序流程图程序流程图=0=0Bxtitle accountdata segment number db 10,-23,-30,50,9,-105,32,310,20,86 s db 0data endscode segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov bx,offset number mov cx,10 mov al,s 本题为统计本题为统计10个数值中正数的个数个数值中正数的个数do2:mov dl,0 cmp bx,
14、dl jle do1 inc al do1:dec cx cmp cx,0 jle exit inc bx jmp do2 exit:mov s,al mov ah,10ch int 21h code ends end start 本题为统计本题为统计10个数值中正数的个数个数值中正数的个数data segment message db overflow!a db 100 b db 100 c db?data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,ax mov al,a mov bl,b add al,b
15、l jo chuli jmp end1 chuli:call yichu end1:mov ah,10ch int 21h yichu proc mov cx,11 mov si,offset message back:mov dl,si mov ah,2 int 21h dec cx inc si cmp cx,0 ja back ret yichu endp code ends end start 关于循环结构中的串操作指令实施步骤关于循环结构中的串操作指令实施步骤w1、如果串操作要涉及两个串,则一个串应在DS中,叫做源串,另一个应在ES中,叫做目标串。定义一个同时包含这两个串的数据段,然
展开阅读全文