微机原理与应用第5章2节SGQ

上传人:m**** 文档编号:568659987 上传时间:2024-07-25 格式:PPT 页数:42 大小:8.57MB
返回 下载 相关 举报
微机原理与应用第5章2节SGQ_第1页
第1页 / 共42页
微机原理与应用第5章2节SGQ_第2页
第2页 / 共42页
微机原理与应用第5章2节SGQ_第3页
第3页 / 共42页
微机原理与应用第5章2节SGQ_第4页
第4页 / 共42页
微机原理与应用第5章2节SGQ_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《微机原理与应用第5章2节SGQ》由会员分享,可在线阅读,更多相关《微机原理与应用第5章2节SGQ(42页珍藏版)》请在金锄头文库上搜索。

1、数据定义语句:数据定义语句:DB、DW、DD标号赋值语句:标号赋值语句:EQU、段定义语句:段定义语句:SEGMENTENDS段分配语句:段分配语句:ASSUME程序开始、结束语句:程序开始、结束语句:START、END起始指令(用于定义偏移地址):起始指令(用于定义偏移地址):ORG强制转换强制转换 :PTR2021/6/71n从程序看出,汇编语言源程序通常有几个段构成,每从程序看出,汇编语言源程序通常有几个段构成,每个段以个段以SEGMENT语句语句开始开始,以,以ENDS语句语句结束结束,并,并分别有一个段名。第一段是分别有一个段名。第一段是数据段数据段,段名,段名DATA,用来,用来定

2、义变量,存放原始数据和运算结果。第二段为定义变量,存放原始数据和运算结果。第二段为代码代码段段,段名为,段名为CODE,用来安排执行代码,是用户编程,用来安排执行代码,是用户编程实现各项功能的主要部分。实现各项功能的主要部分。n整个源程序必须用整个源程序必须用END语句结束语句结束,它通知汇编,它通知汇编程序停止汇编,程序停止汇编,END后面的标号后面的标号START指明该程序执指明该程序执行的启动地址。源程序中各段的名字可以任选,段的行的启动地址。源程序中各段的名字可以任选,段的数目可以根据需要确定数目可以根据需要确定.如果用到堆栈段和附加段,在如果用到堆栈段和附加段,在段的定义的时候也要定

3、义出来。段的定义的时候也要定义出来。1、汇编语言源程序的格式:、汇编语言源程序的格式:总结总结2021/6/72下面是一个源程序模块的典型段结构形式:下面是一个源程序模块的典型段结构形式:STACKSEGMENT ;定义堆栈段;定义堆栈段STACKENDS;堆栈段结束;堆栈段结束DATASEGMENT;定义数据段;定义数据段DATAENDS;数据段结束;数据段结束ESEGSEGMENT;定义附加段;定义附加段ESEGENDS;附加段结束;附加段结束CODESEGMENT;定义代码段;定义代码段ASSUMECS:CODE,DS:DATA,SS:STACK,ES:ESEG;段的分配段的分配STAR

4、T:MOVAX,DATAMOVDS,AX;指令性语句开始(我们第四章学习;指令性语句开始(我们第四章学习编写的程序)编写的程序)MOV AH,4CHINT21H;返回;返回DOSCODEENDS ;代码段结束;代码段结束ENDSTART ;整个程序结束;整个程序结束2021/6/73时间:时间:201210月月8日(第七周周一)日(第七周周一)1、掌握、掌握汇编语言程序的设计步骤汇编语言程序的设计步骤。2、掌握掌握汇编语言程序设计分类。汇编语言程序设计分类。2021/6/74n一、汇编语言程序的设计步骤一、汇编语言程序的设计步骤1)建立数学模型建立数学模型2)确定数据结构与算法确定数据结构与算

5、法3)绘制流程图及编制程序绘制流程图及编制程序4)调试调试5.2汇编语言程序设计汇编语言程序设计2021/6/75编编辑辑文本编辑器,如文本编辑器,如 EDIT.COM源程序:文件名源程序:文件名.asm汇汇编编编译程序,如编译程序,如 TASM.EXE目标模块:文件名目标模块:文件名.obj连连接接连接程序,如连接程序,如TLINK.EXE可执行文件:文件名可执行文件:文件名.exe调调试试调试程序,如调试程序,如 DEBUG.EXE应用程序应用程序错误错误错误错误错误错误错误错误2021/6/76n二、二、程序流程图程序流程图n1)处理框处理框nn2)判断框判断框n判断框常用菱形框来表示,

6、它用来指明判定点。框内指明判判断框常用菱形框来表示,它用来指明判定点。框内指明判断条件。它有一个入口和两个以上的出口,在各出口处要写明断条件。它有一个入口和两个以上的出口,在各出口处要写明条件,成立时标明条件,成立时标明“是是”或或“Y”,不成立时标明,不成立时标明“否否”或或“N”来表示。来表示。2021/6/773)起止框起止框4)流程线流程线5)连接框连接框2021/6/78求一个学生的各门成绩的总和求一个学生的各门成绩的总和2021/6/79二、汇编语言程序设计分类二、汇编语言程序设计分类1、顺序结构、顺序结构2、分支结构、分支结构3、循环结构、循环结构2021/6/710n顺顺序序程

7、程序序结结构构是是一一种种最最简简单单的的程程序序结结构构。在在流流程程图图中中,处处理理框框一一个个接接一一个个执执行行,既既无无分分支支,也也无无循循环环和和转转移移。是是一一种简单的程序结构。种简单的程序结构。S 1S2S3(一)、顺序结构(一)、顺序结构程序的初始化部分一般程序的初始化部分一般都是顺序结构都是顺序结构2021/6/711DATASEGMENT x DB 95 y DB 87 z DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATA;装填数据段寄存器;

8、装填数据段寄存器DS 例例5.8 求两个数的平均值。这两个数分别放在求两个数的平均值。这两个数分别放在x单元和单元和y单元中,而平均值单元中,而平均值放在放在z单元中。编制程序如下:单元中。编制程序如下: 2021/6/712MOV DS,AXMOV AL,x ;第一个数送入;第一个数送入ALADD AL,y ;两数相加,结果送;两数相加,结果送ALMOV AH,0 ADC AH,0 ;带进位加法,进位送;带进位加法,进位送AHMOV BL,2 ;除数;除数2送送BLDIV BL ;求平均值送;求平均值送ALMOV z,AL ;结果送入;结果送入z单元单元 MOV AH ,4CH INT 21

9、H CODE ENDSEND START 2021/6/7132021/6/714例:自然数例:自然数015的平方表的平方表,存在内存,存在内存TABLE开始的连续开始的连续16个个单元中,现单元中,现XAD单元存有任意一自然数(单元存有任意一自然数(0 X 15),),查表求查表求X的平方,存入的平方,存入YAD单元中。单元中。分析分析:X2的值的地址:的值的地址:TABLE表的首地址表的首地址+X可以用可以用XLAT指令,也可以不用指令,也可以不用MOVBX,OFFSETTABLEMOVAL,XADXLATTABLEMOVYAD,ALMOVSI,OFFSETTABLEMOVAL,XADMO

10、VAH,0ADDSI,AX;求出偏移地址,一定是求出偏移地址,一定是16位位MOVAL,SIMOVYAD,AL2021/6/715datasegmenttabledb0,1,4,9,16,25,36,49,56,81db100,121,144,169,196,225xaddb3yaddb?dataendscodesegmentassumecs:code,ds:datastart:movax,data;初始化;初始化DSmovds,axmovsi,offsettable;表的首址送;表的首址送simovah,0;AH送送0moval,xad;将;将X送送ALaddsi,ax;求;求X平方值的地址

11、平方值的地址moval,simovyad,alMOVBX,OFFSETTABLE;表的地址给表的地址给BXMOVAL,XADXLATTABLE;查表;查表MOVYAD,ALmovah,4chint21hcodeendsendstart2021/6/7162021/6/717例例5.9 在在内内存存中中自自tab开开始始的的16个个单单元元连连续续存存放放着着015的的平平方方值值(平平方方表表),任任给给一一个个数数x(0x15)在在x单单元元中中,如如13,查表求,查表求x的平方值,并把结果送入的平方值,并把结果送入y单元中。单元中。 根据给出的平方表,分析表的存放规律,可知表的起根据给出的

12、平方表,分析表的存放规律,可知表的起始地址与数之和,正是的平方值所在单元的地址,由始地址与数之和,正是的平方值所在单元的地址,由此编制程序如下:此编制程序如下: 2021/6/718DATA SEGMENT tabDB 0,1,4,9,16,25,36,49,64,81 DB100,121,144,169,196,225 x DB 13 y DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA 2021/6/719START:MOV AX,DATAMOV DS,AXLEA BX,tabMOV AH,0MOV AL,xADD BX,AXMOV AL,BX

13、MOV y,ALMOV AH,4CHINT 21HCODE ENDSEND START 2021/6/720例例例例设内存设内存设内存设内存DATADATADATADATA单元存放一个无符号字节数据单元存放一个无符号字节数据单元存放一个无符号字节数据单元存放一个无符号字节数据0B5H0B5H0B5H0B5H,编写程序将其拆成两位十六进制数,并存入编写程序将其拆成两位十六进制数,并存入编写程序将其拆成两位十六进制数,并存入编写程序将其拆成两位十六进制数,并存入HEXHEXHEXHEX和和和和HEXHEXHEXHEX1 1 1 1单元的低单元的低单元的低单元的低4 4 4 4位。位。位。位。HEX

14、HEXHEXHEX存放高位十六进制数,存放高位十六进制数,存放高位十六进制数,存放高位十六进制数,HEXHEXHEXHEX1 1 1 1单元存放低位十六进制数单元存放低位十六进制数单元存放低位十六进制数单元存放低位十六进制数 DSEGDSEGDSEGDSEG SEGMENT SEGMENT SEGMENT SEGMENTDATA DB 0B5HDATA DB 0B5HDATA DB 0B5HDATA DB 0B5HHEX DB HEX DB HEX DB HEX DB ?,?,?,?,?DSEG DSEG DSEG DSEG ENDS ENDS ENDS ENDSCSEG SEGMENTCSE

15、G SEGMENTCSEG SEGMENTCSEG SEGMENTASSUME CSASSUME CSASSUME CSASSUME CS:CSEGCSEGCSEGCSEG,DSDSDSDS:DSEGDSEGDSEGDSEG START START START START:MOV AXMOV AXMOV AXMOV AX,DSEGDSEGDSEGDSEG MOV DS MOV DS MOV DS MOV DS,AXAXAXAX MOV AL MOV AL MOV AL MOV AL,DATADATADATADATA MOV AH MOV AH MOV AH MOV AH,ALALALAL AN

16、D ALAND ALAND ALAND AL,0F0H0F0H0F0H0F0H MOV CL MOV CL MOV CL MOV CL,4 4 4 4 SHR AL SHR AL SHR AL SHR AL,CLCLCLCL MOV HEX MOV HEX MOV HEX MOV HEX,ALALALAL AND AH AND AH AND AH AND AH,0FH0FH0FH0FH MOV HEX+1 MOV HEX+1 MOV HEX+1 MOV HEX+1,AHAHAHAH MOV AH MOV AH MOV AH MOV AH,4CH4CH4CH4CH INT 21H INT 21H

17、 INT 21H INT 21HCSEG ENDSCSEG ENDSCSEG ENDSCSEG ENDS END START END START END START END START2021/6/721在地址偏移量为在地址偏移量为3000H的的ALF单元开始,存放一个单元开始,存放一个压缩压缩的的BCD码,将其转化为码,将其转化为ASCII码,存放在码,存放在接下来接下来的的BLF开始的单元中。开始的单元中。DATASEGMENTORG3000HALFDB89HBLFDB2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DA

18、TAMOVDS,AXMOVAL,ALFMOVBL,ALMOVCL,4SHRAL,CLORAL,30HMOVBLF,ALANDBL,0FHORBL,30HMOVBLF+1,BL MOVAH,4CHINT21HCODEENDSENDSTART2021/6/722DATASEGMENTHEXDB0ABH,37HDATDB?DATAENDS CODESEGMENTASSUMECS:CODE,DS:DATAMOVAH,4CHINT21HCODEENDSENDSTARTSTART: MOVAX,DATAMOVDS,AXMOVAL,HEXANDAL,0FHMOVCL,4SHLAL,CLMOVBL,HEX+1

19、ANDBL,0FHADDAL,BLMOVDAT,AL设设HEX、HEX+1单元的低四单元的低四位分别存放一位十六进制数,位分别存放一位十六进制数,编制程序将其合并为一个字编制程序将其合并为一个字节,并存入节,并存入DAT单元。其中单元。其中HEX单元中数据作为高位部单元中数据作为高位部分。分。2021/6/723复习复习1、汇编语言程序的设计步骤汇编语言程序的设计步骤。2、汇编语言程序设计分类。汇编语言程序设计分类。3、顺序结构程序设计。、顺序结构程序设计。2021/6/724程序段程序段1程序段程序段2条件条件如果分支具有如果分支具有N种可能种可能,则称其为则称其为N分支分支。一般。一般N=

20、2时称为时称为简单分支简单分支,N=3时称为时称为多分支程序多分支程序。(二)、分支结构(二)、分支结构1、简单分支、简单分支程序段程序段1程序段程序段2条件条件 分支程序结构要求程序在运行过程中需要根据不同的情分支程序结构要求程序在运行过程中需要根据不同的情况或条件作出判断,并转向相应的处理程序。分支是通过况或条件作出判断,并转向相应的处理程序。分支是通过条条件转移件转移指令实现指令实现的。的。2021/6/725程序段程序段2条件条件2程序段程序段3程序段程序段1条件条件12、多分支、多分支2021/6/726例、读程序:下列程序段是比较例、读程序:下列程序段是比较AX、BX、CX中中带符

21、号数带符号数的大小,的大小,将将最大的数最大的数放在放在AX中,请将程序中,请将程序填充完整。填充完整。CMPAX,BX()NEXTXCHGAX,BXNEXT:()AX,CXJGOUT1()AX,CXOUT1:AXBX?AXBXAXCX?AXCXYNYNJGCMPXCHG2021/6/727DATASEGMENTORG1000HDAT1DB-1,2,3,-9COUNTDWNMNDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATACODEENDSENDSTARTSTART:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HMOVSI,OFFSET

22、DAT1MOVCX,COUNTMOVBL,SIINCSIDECCXCMPBL,SIJLNEXTXCHGBL,SINEXT:INCSIDECCXJNZAGAINMOVMN,BLAGAIN:思考:求思考:求N个带符号字节中的最小数个带符号字节中的最小数扩展:无符号,字,最大值。极值问题。扩展:无符号,字,最大值。极值问题。2021/6/7281 (X0)0 (X=0)1 (X0) Y例、根据例、根据BUFFER中的数中的数(X)对符号函数对符号函数BX(Y)赋值。赋值。11XY2021/6/729 (AX)=0?(AX)0?0FFFFHBX0BX1BXYJEYJG(AX)0(AX)0ZERO初始化

23、初始化NN(AX)02021/6/730DATA SEGMENTBUFFERDWXYDW?DATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,BUFFERXOR BX,BXCMPAX,0JEAJGBMOV BX,0FFFFHJMP STOPA:MOV BX,0JMPSTOPB:MOV BX,1STOP:MOV Y,BXMOV AH,4CHINT21HCODEENDSENDSTART扩展:分段函数扩展:分段函数2021/6/7312021/6/732例、从内存例、从内存ADR单元开始单元开始,连续存放出连续

24、存放出1000个学生的某门个学生的某门课成绩课成绩.统计统计90100,7089,6069,60以下各段人数以下各段人数.解解:设设CX:计数器计数器,SI:地址指针地址指针.定义定义:S5,S6,S7,S9单元单元存放各分数段的人数存放各分数段的人数.AL:待查分数待查分数.2021/6/733初始化初始化CX、SI、S5、S6、S7、S9AL 60?AL=90修改地址修改地址CX=0?YS9+1S7+1S5+1YYYNNNN结束结束60分以下分以下6069901007089S6+12021/6/734DATASEGMENTADRDB68,59,85,96,76COUNTDW1000S5DW

25、0S6DW0S7DW0S9DW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETADRMOVCX,COUNTAGAIN:MOVAL,SICMPAL,60JLNEXT1CMPAL,70JLNEXT2CMPAL,90JGENEXT3INCWORDPTRS6JMPSTOPNEXT1:INCWORDPTRS9JMPSTOPNEXT2:INCWORDPTRS7JMPSTOPNEXT3:INCWORDPTRS5STOP:INCSIDECCXJNZAGAINMOVAH,4CHINT21HCODE ENDS

26、ENDSTARTADRDB250DUP(68,59,85,96)思考:如果多加一个分数段思考:如果多加一个分数段“8090”呢?呢?分类问题分类问题分类修改。分类修改。2021/6/7352021/6/736例例4计算计算计算计算 X X X X20 (020 (020 (020 (0X8X8X8X8)Y= 5X-2 (8Y= 5X-2 (8Y= 5X-2 (8Y= 5X-2 (8X15X15X15X15) X ( X ( X ( X (其它其它其它其它) ) ) )设设设设X X X X为单字节带符号整数,且存在为单字节带符号整数,且存在为单字节带符号整数,且存在为单字节带符号整数,且存在A

27、RGXARGXARGXARGX单元,单元,单元,单元,计算结果计算结果计算结果计算结果Y Y Y Y存入存入存入存入RLTRLTRLTRLT单元单元单元单元 分析:分析:分析:分析:求求求求X X X X绝对值,若绝对值,若绝对值,若绝对值,若X X X X为正数,则是其本身,若为正数,则是其本身,若为正数,则是其本身,若为正数,则是其本身,若X X X X为负数,则将其取补,也就是连同其符号位在内为负数,则将其取补,也就是连同其符号位在内为负数,则将其取补,也就是连同其符号位在内为负数,则将其取补,也就是连同其符号位在内一起取补,原来的负数变成了正数,即一起取补,原来的负数变成了正数,即一起

28、取补,原来的负数变成了正数,即一起取补,原来的负数变成了正数,即X X X X的绝对值的绝对值的绝对值的绝对值,5X,5X,5X,5X可用可用可用可用X*2*2X*2*2X*2*2X*2*2X X X X的算法求得的算法求得的算法求得的算法求得 2021/6/737DATA SEGMENTARGXDB7RLTDW?DATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXORAX,AXMOV AL,ARGXCMP AL,0JGNEXT1NEGALJMPSTOPNEXT1:CMP AL,15JLNEXT2JMPSTOPNEXT3:SALAL,1JNCGO1INCAHGO1:SALAL,1JNCGO2INCAHGO2:ADDAL,ARGXADCAH,0SUBAX,2STOP:MOVRLT,AXMOVAH,4CHINT21HCODEENDSENDSTARTNEXT2:CMP AL,8JGNEXT3ADDAL,20ADCAH,0JMPSTOPX20(0x=8)5X2(8x15)x(其它其它)YMOVBL,5IMULBL2021/6/738部分资料从网络收集整理而来,供大家参考,感谢您的关注!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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