资源描述:
《第3章 汇编语言程序设计 第4节 汇编语言程序设计ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四节汇编语言程序设计一、概述1.编写汇编语言程序步骤2.判断程序质量的标准3.几种程序结构二、汇编语言程序设计举例例1将寄存器BX中的内容以十六进制形式显示出来。例2将键盘输入的十进制数据串转换成其相应大小的数值存放在BX寄存器中。一、概述1.编写汇编语言程序步骤2.判断程序质量的标准3.几种程序结构一.编写汇编语言程序步骤分析实际问题,抽象描述问题的模型确定解决模型的算法按算法画出程序流程图按流程图编写程序上机调试,运行程序2.判断程序质量的标准程序的正确性程序的可读性程序的执行时间程序所占内存大小3.几种程序结构
2、顺序结构分支结构循环结构子程结构顺序结构两个分支YN、、、CMPAL,BLJGgreatJMPexitgreat:exit:、、、、、、AL≤BL处理AL>BL处理分支结构三个分支、、、CMPAL,0JGgreatJLlessJMPexitless:JMPexitgreat:exit:、、、AL=0处理AL>0处理AL<0处理YYNN分支结构循环结构当型循环(当条件成立进入循环)循环初始设置循环体循环条件判断?YN直到型循环(直到条件成立退出循环)YN循环初始设置循环体循环条件判断?1.多处调用完成同一功能的子程:co
3、deSEGMENTstart:、、CALLsub、、CALLsub、、CALLsub、、MOVAH,4CHINT21HsubPROC、、、、RETsubENDPcodeENDSENDstart2.模块化程序设计:codeSEGMENTbegin:CALLsub1CALLsub2CALLsub3MOVAH,4CHINT21Hsub1PROC、、RETsub1ENDPsub2PROC、、RETsub2ENDPsub3PROC、、RETsub3ENDPcodeENDSENDbegin子程结构注意返回DOS语句位置二、汇编语言
4、程序设计举例例1将寄存器BX中的内容以十六进制形式显示出来。例2将键盘输入的十进制数据串转换成其相应大小的数值存放在BX寄存器中。有关字符、数码转换的处理1.计算机处理字符时,常用的字符编码是ASCII码。2.数字和字母的ASCII码是一个有序序列数字0~9:30H~39H大写字母A~Z:41H~5AH小写字母a~z:61H~7AH3.计算机处理信息时,其对象都是二进制数。外设(显示器、打印机、键盘等)用ASCII码与CPU进行信息传送。例如:1)在键盘上按下某一字符键(如’9’),键盘接口向键盘缓冲区送去的是该字符的
5、ASCII码(如39H),不是送数字09H。2)在文本方式下,要在显示器上显示某一字符(如’A’),须将该字符的ASCII码(如41H)送显示缓冲区,不是送数字0AH。计算机要利用显示器、键盘等外设时,须据程序设计的需要进行有关转换。例将CPU运算的结果通过显示器显示时,需将结果转换成其对应的ASCII码才能进行显示。例CPU要处理从键盘输入的某一数据,需将该数据串进行转换后才能应用。例1将BX寄存器中的内容以十六进制形式显示出来。BX是一个16位寄存器二进制1010100100111110用十六进制显示时,每4位用一
6、个字符显示,共4个其中0000→’0’30H,1010→’A’41H0001→’1’31H,1011→’B’42H、、、、1001→’9’39H,1111→’F’46H?十六进制A93E屏幕上的显示‘A’‘9’‘3’‘E’对应的ASCII41H39H33H45H算法:取出要显示的某4位,转换为对应的ASCII码,再调用DOS系统功能进行显示。1)对于0000~1001,先扩展成一个字节,高4位清0,加上30H后,即可得字符’0’~’9’对应的ASCII码。00000001B+30H=31H00001001B+30H=3
7、9H0001B‘1’1001B‘9’2)对于1010~1111,先扩展成一个字节,高4位清0,加上30H后,还要再加上07H,才能得到’A’~’F’对应的ASCII码00001010B+30H+07H=41H00001111B+30H+07H=46H1010B‘A’1111B‘F’codeSEGMENTASSUMECS:codestart:MOVCH,4;字符个数MOVCL,4;循环移位次数next:ROLBX,CL;取显示位的值MOVDL,BL;保存在DL中ANDDL,0FH;清除高4位ADDDL,30H;转变为数字
8、的ASCIICMPDL,39H;大于39H,则应转变JLEprint;为字母A~F的ASCIIADDDL,07Hprint:MOVAH,2H;显示DL中的字符INT21HDECCH;显示结束?JNZnextMOVAH,4CH;返回DOSINT21HcodeENDSENDstart显示字符个数CH=4循环移位次数CL=4BX循环左移