已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计实验指导【实验提要】 以下列举的 10个实验,都是以 Intel的 8086及后续系列微处理器的指令系统为核心,采用宏汇编工具 MASM6. X以及调试工具 DEBUG或 DEBUG32,针对本教材所述内容进行相关的上机实践。旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉 8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。 (带*号的为选作内容)实验一 调试工具 DEBUG的应用实验目的通过实验掌握下列知识: 1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;2、DEBUG命令: A,D,E,F,H,R,T,U的使用;3、BCD码、ASCII码及用十六进制数表示二进制码的方法;4、寄存器: AX,BX,CX,DX,FLAGS,IP。内容及步骤注:本次实验可以参照教材上关于 DEBUG的叙述内容进行。一、DEBUG 命令使用1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境, 显示提示符 - 。2、用命令 F 200 220 AB 将AB的两个ASCII码循环填入内存。注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数AB是被填入的数值,若不给出第二个参数则填入128(8行)个字节。3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。汇编语言程序设计实验指导 1336、用H命令检查下列各组十六进制数的和与差(补码表示):(1)56H,34H (2)23H,45H (3)AB,3045H注:输入 H 12 34 则在下一行显示0046 FFDE,即二者的补码和与差。在DEBUG环境下所有数据和地址都是按16进制处理,所以不要加后面的H标志。7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。注:若在DEBUG32环境下用R16和R32命令分别显示16位和32位寄存器内容。8、用R命令将AX,BX内容改写为1050H及23A8H。二、8086 常用指令练习1、传送指令1)用A命令在内存400H处键入下列内容: -A 0400*:0400 MOV AX,1234*:0403 MOV BX,5678*:0406 XCHG AX,BX*:0408 MOV AH,10*:040A MOV AL,20*:040C MOV CX,89AB*:040F XCHG AX,CX*:0411 -注:*为段寄存器CS的当前值,内容是不一定的,每行命令以回车键结束。2)用U命令检查键入的程序并记录,特别注意左边的机器码与指令的对应关系。-U 04003)用T命令逐条运行这些指令,每运行一行指令观察各寄存器及IP的变化情况,并注意标志位的变化情况。-T =0400 (注:=400是表示从偏移地址400处开始单步执行)-T (不给出地址,则表示接续上一条指令执行)-T2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,11MOV AL,22汇编语言程序设计 134ADD AL,AHSUB AL,33MOV CX,1234MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。3、带进位加减法:1)用A命令在内存200H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,84MOV CH,56MOV CL,78ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,342)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。* 4、BCD码加减法(选作)1)内容:MOV AL,65ADD AL,16DAA2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。注:相加后AL值本来是7B,经DAA指令调整后变为81,即65和16两个BCD码的和。汇编语言程序设计实验指导 135汇编语言程序设计 136汇编语言程序设计实验指导 137汇编语言程序设计 138汇编语言程序设计实验指导 139汇编语言程序设计 140汇编语言程序设计实验指导 141汇编语言程序设计 142汇编语言程序设计实验指导 143实验二 内存操作数及寻址方法实验目的通过实验掌握下列知识: 1、DEBUG命令:A,T,D,F,G; 2、数据在内存中的存放方式和内存操作数的几种寻址方式; 3、汇编指令:INC,DEC,LOOP,INT 3的应用; 4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。 实验内容和步骤 一、内存操作数及各种寻址方式使用程序内容:MOV AX,2000 MOV 200,AXMOV BX,210MOV BYTE PTRBX,50MOV CL,40INC BXMOV BX,CLDEC CLMOV SI,5MOV BX+SI,CLMOV BX+SI+1,CLMOV WORD PTRBX+SI+2,1234操作步骤 1) 用A命令键入上述程序,并用T命令逐条运行。汇编语言程序设计 144汇编语言程序设计实验指导 1452) 每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注意是什么寻址方式。汇编语言程序设计 146注:D命令显示结果时,双字节数在内存的存放是高地址对应高数据位;指令中出现的BYTE PTR及WORD PTR是因为操作数的宽度必须一致。二、求累加和程序程序内容:MOV BX,200MOV CX,9XOR AX,AXADD AL,BX ;按字节相加ADC AH,0 ;若有进位则到AH中INC BXLOOP 108INT3操作步骤:1)进入DEBUG环境。2)用命令F 200 L10 40 在内存200H-20FH地址处填入一系列值40H。3)用命令A 100 将上述程序键入到100H开始的内存中。注:LOOP指令用到108H号地址,即为ADD指令的当前地址,构成一个循环。4)用命令G =100 执行该程序段,程序运行后停在INT 3 指令上,此时观察AX寄存器的值为240H,即为9个40H的和。注:INT 3指令是一条断点中断指令,程序遇到该指令则停止。5)用T =100命令单步执行,观察IP、CX及AX寄存器的值,分析程序执行过程。汇编语言程序设计实验指导 147汇编语言程序设计 148汇编语言程序设计实验指导 149汇编语言程序设计 150汇编语言程序设计实验指导 151实验三 数据串传送和查表程序实验目的通过实验掌握下列知识:1、利用简化段定义方法实现程序结构定义;2、利用DOS的21H号中断调用完成输入输出;3、查表法和查表指令XLAT;4、数据串传送指令MOVS及重复前辍REP;5、掌握EQU和DUP伪指令的用法。实验内容及步骤一、利用查表方法显示内存单元的内容1、编辑下列程序:.model small.stack.datastr1 db ABCDEFGHIJ ;待显示的内存区内容str2 db Please input the number you will display:,10,13,$.code.startupmov ah,9mov dx,offset str2int 21h ;显示STR2字符串的内容,即提示信息mov ah,1int 21h ;输入待显示的字符序号(0-9)mov bx,offset str1sub al,30hxlat ;查STR1表,对应序号的字符ASCII码进入ALmov dl,almov ah,2int 21h ;显示对应字符.exit 0汇编语言程序设计 152End2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置 的字符。3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出,分析其执行过程。二、数据串传送程序1、编辑下列程序:.model small.stack.datastr1 db abcdefghijklmn ;源串定义lengs equ $-str1str2 db lengs dup (?),$ ;目标串.code.startupmov ax,dsmov es,ax ;使DS和ES为同一个段cldlea si,str1lea di,str2mov cx,lengsrep movsb ;串复制mov ah,9mov dx,offset str2int 21h ;显示目标串.exit 0End2、程序汇编通过后,运行程序察看输出结果。3、在DEBUG环境中,用P命令调试执行该程序,察看SI、DI寄存器及相应内存单元的变化情况,分析其执行过程。4、如果把源串的小写字母复制到目标串的同时再修改为对应的大写字母,该怎么修改程序?汇编语言程序设计实验指导 153实验附录 ASCII 码表编码 字符 编码 字符 编码 字符 编码 字符00 NUL 20 SPACE 40 60 01 SOH 21 ! 41 A 61 a02 STX 22 “ 42 B 62 b03 ETX 23 # 43 C 63 c04 EOT 24 $ 44 D 64 d05 ENQ 25 % 45 E 65 e06 ACK 26 5B 7B 1C FS 3C 5E 7E 1F US 3F ? 5F _ 7F DEL汇编语言程序设计 154实验四 完整段定义程序实现实验目的1、掌握完整段格式定义的程序设计方法;2、掌握伪指令:SEGMENT、ENDS、ASSUME、END、OFFSET、DUP;3、掌握汇编语言程序中指名程序入口的方法;4、了解用INT 21H 的4C号功能调用返回系统的方法;5、掌握用MASM、LINK工具进行汇编和链接的过程。实验内容要求程序中实现对键盘输入的字符作如下处理:如果输入的是小写字母则转换成对应的大写字母并显示在屏幕上;如果输入的是大写字母则转换成对应的小写字母并显示在屏幕上;如果输入的是键盘上的Esc键则退出程序执行;按其它任意可显示键,则不作处理,直接显示输出。实验步骤1、编辑下列程序:DATA SEGMENT ;数据段定义MESSAGE DB Please input your key!,0DH,0AH,$DATA ENDSSTACK SEGMENT PARA STACK STACK ;堆栈段定义DB 50 DUP(?)STACK ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段寄存器START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21H ;显示提示信息AGAIN: MOV AH,1INT 21H ;读入一个键盘按键CMP AL,1BH ;按的是ESC键(ASCII码为1BH)则退出程序JE EXITCMP AL,61H JB NEXT汇编语言程序设计实验指导 155CMP AL,7AHJA NEXTSUB AL,20H ;ASCII码在61H和7AH之间(小写字母)则转换为大写字母JMP DISPNEXT: CMP AL,41HJB DISPCMP AL,5AHJA DISPADD AL,20H ;ASCII码在41H和5AH之间(大写字母)则转换为小写字母DISP: MOV DL,ALMOV AH,2INT 21H ;显示当前字符JMP AGAIN ;循环EXIT: MOV AH,4CH ;结束程序INT 21H CODE ENDSEND START ;指定START标号为程序入口地址2、把上述程序保存为ASM源文件,利用MASM根据对源文件进行汇编,产生.OBJ文件,若汇编时提示有错,编辑工具修改源程序后重新汇编,直至通过。3、用LINK将.OBJ文件连接成可执行的.EXE文件。4、在DOS状态下运行LINK产生的.EXE文件,按过键盘之后在屏幕上显示实验要求的字符,按ESC键可返回DOS。注:汇编过程中若出现错误,可参阅本章最后的实验附录。5.把上述程序改为简化段定义格式,再汇编,查看执行结果。汇编语言程序设计 156实验五 分支结构程序设计实验目的1、掌握利用无条件转移指令JMP和有条件转移指令实现多分支程序的设计方法。2、掌握用DOS的中断调用,实现再程序执行过程中从键盘动态输入字符串的方法。3、掌握程序中标号的定义和使用。实验内容实现从键盘输入一个月份数值(1-12),根据输入的月份数值显示相应的月份英文单词缩写,如输入5则显示May。实验步骤1、编辑下列程序:.model small.stack.datamon db Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Decmsg1 db Please input a month(1-12) :,13,10,$msg2 db Input error! Now try again.,13,10,$buffer label byte ;定义输入月份的输入缓冲区maxlen db 3 ;最多 2个数字,包括一个回车actlen db ? ;保存实际输入的字符个数string db 3 dup(?) ;保存输入的月份数字内容(ASCII 码).code.startupshuru: ;开始输入月份编号lea dx,msg1 mov ah,09hint 21h ;显示提示信息lea dx,buffermov ah,0ahint 21h ;输入月份数值cmp actlen,0 ;若没有输入月份则转出错处理je shuruerr;以下判断输入月份是否合法lea di,stringcmp actlen,2je da10 ;若输入的是 2位数月份值则转到 da10标号处执行mov al,string ;若只输入 1位数字月份值,则读出该值and al,0fh ;把 ASCII码转换为对应数字汇编语言程序设计实验指导 157jmp jisuanda10:mov al,stringand al,0fh ;把月份数值十位的 ASCII码转换为对应数字(如 12月的 1字)mov bl,10mul bland string1,0fh ;把月份数值个位的 ASCII码转换为对应数字add al,string1 ;十位加上个位 (如 12月)jisuan: ;以下计算偏移地址cmp al,1 ;比 1小是非法月份jb shuruerr ;若月份值小于 1则转出错处理cmp al,12ja shuruerr ;比 12大也是非法月份sub al,1 ;月份值减 1shl al,1shl al,1 ;月份再乘 4对应了 MON字符串中从首地址开始的字符相对位置xor ah,ah ;1 月份从 0位置开始即 JAN,.5月份从位置 16开始即 MAYlea si,mon ;找到被显示月份字符的位置add si,axmov cx,3output: mov dl,si ;输出对应月份英文缩写mov ah,2int 21hinc siloop output.exit 0shuruerr: lea dx,msg2 ;输入出错时提示出错,并转到程序起始处重新执行mov ah,09hint 21hjmp shuruend2、程序汇编通过后,运行程序察看输出结果。3、程序运行中不输入月份值(直接回车),或输入非法月份值,观察程序执行的情况。汇编语言程序设计 158实验六 分支与循环混合结构程序设计实验目的1、掌握利用.IF语句实现分支程序的设计方法;2、掌握利用.REPEAT语句实现循环程序的设计方法;3、掌握DIV指令的使用特点;4、掌握地址表的定义和使用方法。实验内容实现成绩单的分等级统计功能,在数据段中有成绩单的定义,并包含有若干个分数,程序根据成绩单数据的个数循环分别统计个分数段成绩的个数,最后输出个等级段的分数个数。要求:成绩单数据少于100字节,输出的每个档次统计值按两位数显示。实验步骤1、编辑下列程序:.model small.stack.dataHAN DB 42,62,68,70,79,82,85,90,95,99,66,88,78,90,98,200 ;成绩单count equ $-han ;记录数据个数MEM DB 6 d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年成都市青羊区第九人民医院医护人员招聘笔试模拟试题及答案解析
- 2026年国网辽宁省电力有限公司高校毕业生招聘考试(第三批)考试备考题库及答案解析
- 2026年抚州市曾巩学校公开选调教师备考题库【33人】及完整答案详解
- 2026云南昭通巧家县蒙姑镇中心卫生院招聘编外人员1人笔试备考试题及答案解析
- 2026浙江金华武义供销农产品有限公司招聘1人笔试参考题库及答案解析
- 2026山东齐鲁工业大学(山东省科学院)招聘25人(第二批长期招聘)笔试模拟试题及答案解析
- 2026陕西农林职业技术大学招聘专业技术人员64人笔试备考试题及答案解析
- 2026新疆交通职业技术大学面向社会招聘编制外聘用人员20人考试备考试题及答案解析
- 2026河北沧州市工会岗位人员招聘53人笔试参考题库及答案解析
- 2026西安市未央区大明宫颐和郡幼儿园招聘(2人)笔试备考试题及答案解析
- 2026年江苏南京市高三二模高考物理试卷试题(含答案详解)
- 2026四川省成都广定发展集团有限公司招聘3人备考题库(含答案详解)
- 2026四川成都市公共交通集团有限公司招聘投资管理专员岗位备考题库附答案详解(b卷)
- (完整版)旅游学概论期末试题(附答案)
- 2025年电工(中级)实操技能考核试题(附答案)
- 2025年广东省深圳市初二学业水平地理生物会考真题试卷(+答案)
- 2026年公立医院信息科工作人员招聘考试笔试试题(含答案)
- 园林绿养护安全培训内容
- 2026年深圳市创新投资集团有限公司校园招聘考试参考试题及答案解析
- 金属标牌行业现状分析报告
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
评论
0/150
提交评论