版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言试验报告班 级 学 号 姓 名 指导教师 实验一 汇编语言运行环境及方法、简单程序设计一、实验目的:1、熟悉汇编语言运行环境和方法2、了解如何使用汇编语言的编制程序。3、熟悉DEBUG有关命令的使用方法。4、利用DEBUG掌握有关指令的功能。5、利用DEBUG运行简单的程序段。二、实验内容:编写一程序:比较两个字符串string1和string2所含的字符是否相同。若相同则显示match,否则No match。三、实验步骤:1、建立程序所需要的ASM文件,并将实验指导书中的范例程序编写好。2、用汇编程序MASM对源文件汇编产生目标文件OBJ。3、用链接程序LINK产生执行文件EXE。4
2、、执行程序。5、使用DEBUG调试程序。分别体会g命令、r命令、t命令、u命令、d命令以及q命令的用法。用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,用-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存器和修改寄存器的值,-q命令用来退出debug程序。在这些命令的后面加上地址,可以将命令执行到相应的地方。在Debug中用-g运行:用-u命令显示程序:-g0b 将断点设置在指令LEA SI;之前根据其中指示的ds寄存器内容查看数据段情况:用e命令修改数据段字符串:再次运行结果:用q命令退出debug:四、程序代码:;PROGRAM
3、 TITLE GOES HERE-Compare string;*datareasegment;define data segmentstring1db'Move the cursor backward.'string2db'Move the cursor backward.'mess1db'Match.',13,10,'$'mess2db'No match!',13,10,'$'datarea ends;*prognam segment;define code segment;-mainprocf
4、arassume cs:prognam,ds:datarea,es:datareastart:;starting execution address;set upstack for returnpushds;save old data segmentsubax,ax;put zero in AXpushax;save it on stack;set DSregister to current data segmentmovax,datarea;datarea segment addrmovds,ax;into DS registermoves,ax;into ES register;MAIN
5、PART OF PROGARM GOES HEREleasi,string1leadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshort dispmatch:leadx,mess1disp:movah,09int21hret;return to DOSmainendp;end of main part of program;-prognam ends;end od code segment;*endstart;end assembly实验二 用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、实验目的:1、熟练掌握DEBUG的常
6、用命令,学会用DEBUG调试程序。2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。3、掌握简单指令的执行过程。二、实验内容:1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内
7、容是什么。程序代码如下:MOV AX,BXMOV AX,0304HMOV AX,0304HMOV AX,BXMOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSIHLT三、实验步骤:实验1:1、从DOS进入DEBUG界面。2、使用R命令修改寄存器堆栈指针地址。3、使用A命令,并开始输入代码。4、使用T命令分步查看结果。编程后用t单步执行:显示交换后结果:实验2:1、从DOS进入DEBUG界面。2、使用R命令修改寄存器堆栈指针地址。3、使用D命令查看0300H处的存放情况。4、使用E命令将存储器偏移地址300H304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH
8、。5、使用A命令,并开始输入代码。6、使用T命令分步查看结果。当数据传送完毕时,AX=0E0D单步执行查看结果:四、程序代码:MOV AX,BXMOV AX,0304HMOV AX,0304HMOV AX,BXMOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSI实验三 储存器块清零和内存块移动一、实验目的:1、了解存储器的读写方法。2、了解存储器的块操作方法。二、实验内容:1、完成程序用来存储块清零,首先设置块起始地址,然后设置块长度,再将当前地址内容清零,地址加一,然后判断是否清完,若清完则结束,否则返回到上一步。2、完成程序用来移动内存块,首先设置块的源地址,再设
9、置块的目标地址,然后设置移动长度,安长度重复传送数据直到结束。三、实验步骤:实验1:1、 对程序进行分析,画出流程图。2、进行MASM汇编和LINK连接生成执行文件。3、利用DEBUG调试执行文件。实验2:1、 对程序进行分析,画出流程图。2、进行MASM汇编和LINK连接生成执行文件。3、利用DEBUG调试执行文件。单步执行:执行到rep movsb之前查看ds段和es段内容:移动后查看ds段和es段内容:四、程序代码:实验1:DATASEGMENTBLOCKDB256DUP(55H)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCNEARM
10、OVAX,DATAMOVDS,AXMOVBX,OFFSET BLOCKMOVCX,256AGAIN:MOVBX,BYTE PTR0INCBXLOOPAGAINJMP$CODE ENDSENDSTART实验2DATASEGMENTSOURCEDB 256 DUP(055H)TARGETDB 256 DUP(0AAH)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTARTPROCNEARMOVAX,DATAMOVDS,AXMOVES,AXMOVSI,OFFSET SOURCEMOVDI,OFFSET TARGETMOVCX,256REPMOVSB
11、JMP$CODEENDSENDSTART实验四 将键盘输入的小写字母用大写字母显示出来一、实验目的:1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。2、掌握DOS功能调用的编程方法。二、实验内容:试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。三、实验步骤:1、设计程序流程图。2、进行MASM汇编和LINK连接生成执行文件。3、执行文件。四、程序代码:CODE SEGMENTASSUMECS:CODESTART:MOVAL,01HINT21HMOVBL,AL
12、MOVDL,'-'MOVAH,02HINT21HMOVAL,BLCMPAL,'a'JBEXITCMPAL,'z'JAEXITSUBAL,20HMOVDL,ALMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HJMPSTARTEXIT:MOVAH,4CHINT21HCODEENDSENDSTART实验五 循环程序实验一、实验目的:1、掌握循环程序的设计方法。2、进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。3、学会针对不同的问题,选用不同的组织循环的
13、方法。二、实验内容:1、编写一个程序,显示AL寄存器中的两位十六进制数。2、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序;若为其他字符则不显示。三、实验步骤:实验1:1、设计程序流程图。2、进行MASM汇编和LINK连接生成执行文件。3、执行文件。实验2:1、设计程序流程图。2、进行MASM汇编和LINK连接生成执行文件。3、执行文件。四、程序代码:实验1:CODESEGMENTASSUMECS:CODESTART:MOVAL,3EHPUSHAXMOVDL,ALMOVC
14、L,4SHRDL,CLCMPDL,9JBENEXT1ADDDL,7NEXT1:ADDDL,30HMOVAH,2INT21HPOPAXMOVDL,ALANDDL,0FHCMPDL,9JBENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART实验2:CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HCMPAL,0DHJZDONECMPAL,'0'JBNEXTCMPAL,'9'JACHARUPMOVDL,ALMOVAH,2INT21HJMPST
15、ARTCHARUP:CMPAL,41HJBNEXTCMPAL,5AHJACHRDNDISPC:MOVDL,'c'MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODE ENDSENDSTART实验六 分支程序实验一、实验目的:1、掌握分支程序的设计方法。2、利用DEBUG程序修改参数、检查结果。3、掌握汇编语言源程序的编辑、汇编、链接及调试过程。二、实验内容:1、编写一个程序,显示AL寄存器中的两位十六进制数。2、编写一个程序,判别键盘上输入的字
16、符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序;若为其他字符则不显示。三、实验步骤:实验1:1、设计程序流程图。2、进行MASM汇编和LINK连接生成执行文件。3、执行文件。实验2:1、设计程序流程图。2、进行MASM汇编和LINK连接生成执行文件。3、执行文件。四、程序代码:实验1:CODESEGMENTASSUMECS:CODESTART:MOVAL,3EHPUSHAXMOVDL,ALMOVCL,4SHRDL,CLCMPDL,9JBENEXT1ADDDL,7NEXT1:ADDDL,30HMOVAH,
17、2INT21HPOPAXMOVDL,ALANDDL,0FHCMPDL,9JBENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART实验2:CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HCMPAL,0DHJZDONECMPAL,'0'JBNEXTCMPAL,'9'JACHARUPMOVDL,ALMOVAH,2INT21HJMPSTARTCHARUP:CMPAL,41HJBNEXTCMPAL,5AHJACHRDNDISPC:MOVDL,&
18、#39;c'MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODE ENDSENDSTART实验七 统计不同成绩段学生的人数一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。2、掌握综合程序的编制及调试方法。二、实验内容:设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序,统计低于60分,6069分,7079分,8089分,9099分和100分的人数,并输出显示统计结果。三、
19、实验步骤:1、设计程序流程图。2、进行MASM汇编和LINK连接生成执行文件。3、执行文件。四、程序代码:SSEG SEGMENT PARA STACK 'stack'DW 100H DUP(0)SSEG ENDSDSEG SEGMENT BUFDW 76,69,84,90,73,88,99,63,100,80 COUNT EQU $-BUF STR1DB '0-59:','$' STR2 DB '60-69:','$' STR3 DB '70-79:','$' STR4 DB
20、39;80-89:','$' STR5 DB '90-99:','$' STR6 DB '100:','$' RES DW 20 DUP(?)DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG, DS:DSEGMAIN PROC FAR MOV AX,DSEG MOV DS,AXSTART: MOV CX,COUNT/2+1 MOV DI,OFFSETRES MOV SI,OFFSET BUF-2BEGIN: INC SI INC SI DEC CX JZ OUTPUT MOV AX,SI CMP AX,60 JB LOP1 CMP AX,70 JB LOP2 CMP AX,80 JB LOP3 CMP AX,90 JB LOP4 CMP AX,100 JB LOP5 JZ LOP6 LOP1: MOV BX,DI INC BX MOV DI,BX JMP LOP2: MOV BX,DI+2 INC BX MOV DI+2,BX JMP BEGIN LOP3: MOV BX,DI+4 INC BX MOV DI+4,BX JMP BEGIN LOP4: MOV BX,DI+6 INC BX MOV DI+6,BX JMP BEGIN LOP5: MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋装修包修协议书
- 房屋订购意向协议书
- 房屋边界地基协议书
- 房租股权转让协议书
- 房车出租合同协议书
- 手提袋贸易合同范本
- 手机回收正规协议书
- 手机的供销合同范本
- 手机网络销售协议书
- 打印双面协议书模板
- 会计师事务所档案管理规范与实务指南
- 新时代下体育社会组织的发展困境与治理策略
- 压力管道操作安全培训课件
- 2025年公安机关人民警察职业道德和纪律要求面试题解析
- 展位租赁搭建合同(标准版)
- 战术战伤救护培训课件
- 全屋定制营销知识培训
- 广东省珠海市紫荆中学2024-2025学年七年级上学期语文11月期中试卷(含答案)
- 西妥昔单抗治疗相关皮疹的护理与管理
- 危机公关案例分析试题及答案
- 2025年高中历史教师课程标准考试模拟试卷及答案
评论
0/150
提交评论