资源描述:
《80x86汇编语言程序设计 实验报告3》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、80X86汇编语言程序设计实验报告专业:班级:日期:成绩:第三次试验指导老师:学生姓名:学号:一、实验目的(1)加深对一些常用的汇编指令的理解;(2)掌握基本的程序设计方法;(3)进一步熟悉TD的使用。二、实验内容1、《80X86汇编语言程序设计》教材中P96的3.11题。(1)请事先指出程序运行结束后,显示器显示的内容。(2)若将NUM的定义改成如下形式:NUMDB35显示的结果是什么?(3)若将NUM的定义改成如下形式:NUMDB59显示的结果是什么?(4)若将NUM的定义改成如下形式:NUMDB75显示的结果是什么?(
2、5)修改该程序,使之能够以16进制形式显示NUM单元中的内容。2、设在一个缓冲区BUF1中存放了一个串“123GOOD”,将其以相反顺序拷贝到另一个缓冲区BUF2中。(用TD观察程序执行前后的数据区,并记录下来)3、输入一个十进制数字串(假定是无符号的),以四位十六进制的形式输出该串对应的值。例如:Input:123↙Output:007BH要求:(1)画出程序流程图,给出寄存器、存储单元的分配方法;(2)给出完整的程序清单,有必要的注释。三、实验步骤及结果1、(1)、程序运行完之后,得到的结果为:(NUM)=39H。(2)
3、、程序运行完之后,得到的结果为:(NUM)=23H。(3)、程序运行完之后,得到的结果为:(NUM)=3;H。(4)、程序运行完之后,得到的结果为:(NUM)=4;H。(5)、修改后的程序段如下:8C1SEGMENTUSE16ASSUMEDS:A1,SS:B1,CS:C1BEGIN:MOVAX,A1MOVDS,AXLEADI,BUF0MOVAL,NUMSHRAL,4CMPAL,0AHJAEL1ORAL,30HMOV[DI],ALL2:INCDIMOVAL,NUMANDAL,0FHCMPAL,0AHJAEL3ORAL,30HM
4、OV[DI],ALL4:INCDIMOVBYTEPTR[DI],'H'INCDIMOVBYTEPTR[DI],'$'LEADX,BUFMOVAH,9INT21HMOVAH,4CHINT21HL1:MOVBYTEPTR[DI],'0'INCDISUBAL,0AHADDAL,'A'MOV[DI],ALJMPL2L3:SUBAL,0AHADDAL,'A'MOV[DI],ALJMPL4C1ENDSENDBEGIN运行后的结果如下:①、当NUM为35时:8②、当NUM为59时:③、当NUM为75时:④、当NUM为0ACH时:2、编写的
5、程序如下:.386DATASEGMENTUSE16BUF1DB'123GOOD$'BUF2DB0DATAENDSSTACKSEGMENTUSE16STACKSTACKENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVDI,OFFSETBUF1MOVBX,OFFSETBUF2MOVCL,[BX]LOPA:MOVDL,[DI]CMPDL,'$'JEL1INCDIJMPLOPAL1:CMPDI,0JEEXITDECDIMOVDL
6、,[DI]MOVCL,DLMOV[BX],CLINCBXJMPL1EXIT:MOVCL,'$'MOV[BX],CL8LEADX,BUF2MOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDSTART运行后的结果如下:运行程序前数据区显示为:运行程序后数据区显示为:3、①、画出流程图如下:开始输入一个数字串将输入的数字串转化为10进制数存储。(从左至右,一位一位的读入并一次转换。设新字符为X,则:(AX)*10+X—>AX,处理过的数最终存于AX中。将该10进制数赋给字变量NUM①8①先对AH中的数进
7、行处理:右移四位,判断是否大于0AH,不小于,则先将零存入BUF0,然后通过转换将对应字母的ASCII码存进去;若小于,则或30H,将对应数字的ASCII码存进去。再将NUM赋给AH,先与0FH,再判断其与0AH的大小,不小于,则通过转换将对应的字母的ASCII码存入BUF0,;若小于,则或30H,将对应数字的ASCII码存进去。将NUM赋给AX,再对AL部分进行处理。方法同上。将BUF0中存的转换好的16进制数输出。结束②、寄存器、存储单元的分配方法:本段编码中使用的寄存器有:AX、BX、DL、CX、SI、DI它们执行的功
8、能分别为:AX:用于处理输入的数字串,将其转化为10进制数存储,之后再转化为16进制数用于输出;BX:记录输入的数字串的长度;CX:中间寄存器,保存常数10;DL:在将数字串转化为10进制数的过程中,作为中间寄存器使用;SI:在将数字串转化为10进制数的过程中,作为源串指针使用;DI:在将