好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

微机原理及汇编语言程序设计实验指导书.doc

15页
  • 卖家[上传人]:大米
  • 文档编号:430561579
  • 上传时间:2024-02-27
  • 文档格式:DOC
  • 文档大小:110KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 《汇编语言程序设计》实验指导书微机原理及汇编语言程序设计实验指导书计算机实验中心目 录实验一 DEBUG的使用 142实验二 数制转换程序 146实验三 数组排序程序 147实验四 数据的输入与输出程序 149实验五 子程序设计 150实验六 宏调用程序设计 151实验一 DEBUG的使用【实验目的】1.学习使用DEBUG调试程序的各种命令2.掌握8088/8086指令系统---数据传送指令、算术指令3.掌握用DEBUG调试程序的方法4.掌握8088/8086 CPU寄存器的用途和存储器组织及它们之间的关系5.掌握内存操作数及寻址方法6.掌握汇编语言伪操作:BYTE PTR,WORD PTR7.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程8.掌握数据传送、算术运算、BCD码调整和循环指令的用法,掌握字符显示的方法实验性质】验证性实验(学时数:2H)【实验内容】一、DEBUG 命令的使用1.敲 DEBUG 进入 DEBUG 环境,显示提示符 '_ '2.用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符3.用命令 E100 30 31 32 …… 3F 将30H~3FH写入地址为100H开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?4.用命令 F100 L0F 'A' 将'A'的ASCII码填入内存,用D命令查看结果。

      5.用命令 F110 11F 41 将41H 填入内存,用D命令观察结果并比较6.用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容7.用R命令将AX,BX内容改写为1234H及5678H8.用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH二、8088/8086常用指令练习1.传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,34MOV AL,56MOV CX,75ABXCHG AX,CX2)用U命令检查键入的程序,特别注意左边的机器码3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况并注意标志位有无变化2.加减法指令:1)用A命令在内存200H处键入下列内容:MOV AH,34MOV AL,2EADD AL,AHSUB AL,78MOV CX,1234MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。

      3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况思考题: 这次运行还是打入T,行不行?如何单步运行上述小程序?用R命令检查一下IP的内容注意T命令与IP的关系3.带进位加减法:1)用A命令在内存300H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,89MOV CH,56MOV CL,98ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,342)用T命令逐条运行这些指令,检查并记录有关寄存器及CF内容3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之4.BCD码加减法1)内容:MOV AL,58ADD AL,25DAA2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容三、内存操作数及各种寻址方式使用: 1)用A命令在内存400H处键入下列内容,并用U命令检查: MOV AX,1234 MOV [1000],AX MOV BX,1002 MOV BYTE PTR[BX],20 MOV DL,39 INC BX MOV [BX],DL DEC DL MOV SI,3 MOV [BX+SI],DL MOV [BX+SI+1],DL MOV WORD PTR[BX+SI+2],28462)用T命令逐条运行这些指令,每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

      注意:D命令显示结果中右边的ASCII字符及双字节数存放法思考题: 有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试 四、DEBUG环境下汇编运行程序方法用A命令汇编程序,编程完成将DS:1000开始的10个字节的内存单元的内容相加,并把相加结果存放在DS:100A 内存单元中,用DEBUG调试运行该程序,并察看运行结果内容: MOV CX,0AH MOV AL,0 MOV BX,1000LL: ADD AL,[BX] INC BX DEC CX JNZ LL MOV [BX],AL INT 3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LL的实际地址,在键入JNZ指令时LL用实际地址值代替2)用U命令检查键入的程序及对应的机器码3)用E1000 01 02 03 04 05 06 07 08 09 0A将1000H开始的前10个内存单元的内容修改为01,02,03,04,05……0A,用D命令查看修改结果4)用T命令逐条运行上述小程序指令,检查并记录有关寄存器、存储单元内容及ZF情况。

      5)用F2000 L0A 02 03 04 05 ……0B 将1000H开始的10 个内存单元的内容修改为02,03,04,05……0B用D命令查看修改结果6)用G=100 全速运行上述小程序,用D1000 100F 查看运行结果思考题: 可否随意在DEBUG提示符“-”后不带参数发出命令G?什么情况下使用命令G时,可不用“=”给出执行的首地址?五、两个多位十进制数相加要求:将下面程序在汇编平台下,完整地进行汇编、连接、运行,然后用DEBUG软件调入可执行文件到内存,用反汇编命令查看实际程序及数据区内容,用t命令逐条执行,以观察各寄存器及数据区内存的数据变化情况,然后使用p命令和g命令执行,以观察执行过程有何特点将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回以DATA3为首的5个内存单元中(低位在前),并显示相加的结果实验程序和结果如下:DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H ;存放被加数47193,ASCII码形式,低位在前DATA2 DB 36H,35H,30H,38H,32H ;存放加数28056,ASCII码形式,低位在前DATA3 DB 5 DUP(?) ;留出5个存放结果的单元DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,5 ;循环次数置5,5个位要相加5次 MOV SI,0 ;SI放地址位移量,每个数的第一字节地址位移量为0 CLC ;CF清0,防止第1个字节相加时ADC指令多加CF中可能的1NEXT: MOV AL,DATA1[SI] ;取被加数一个字节送AL,DATA1偏移地址+SI为有效地址 ADC AL,DATA2[SI] ;AL+加数对应字节+CF(低位相加时可能的进位)结果送AL AAA ;AL中两字节相加的和调整成非压缩的BCD码,进位在CF中 MOV DATA3[SI],AL ;结果送入DATA3对应字节单元中 INC SI ;地址位移量加1指向高一位字节单元 LOOP NEXT ;5次未到,继续循环 MOV SI,5 ;显示5个位,SI中的数既是循环次数又作地址位移量DISP: ADD DATA3[SI-1],30H ;将结果从高位单元开始把非压缩的BCD码变成ASCII码 MOV DL,DATA3[SI-1] ;将ASCII码送DL以满足2号功能调用的规定要求 MOV AH,2 ;功能号送AH INT 21H ;调用2号功能,显示一位数字 DEC SI ;次数减1 JNZ DISP ;5次未到,继续循环 MOV AH,4CH ;功能号送AH INT 21H ;调用4CH号功能,返回DOSCODE ENDS END START运行结果:75249思考题:1.上述程序只显示了相加的结果,没有显示被加数和加数,如果在上述程序的基础上将显示格式改为47193+28056=75249,则程序如何修改?2.上述程序没有考虑运算结果最高位有进位的情况,如果考虑可能产生的进位,则要显示完整的结果,程序如何修改?(提示:INC和LOOP指令均不影响CF)【报告要求】1.列出8086常用指令练习部分的逐条运行记录。

      2.列出DEBUG下调试运行小程序的运行步-------------------运行结果3.回答思考题附:DEBUG 命令1.打 DEBUG 进入 DEBUG,显示提示苻 '_ '2.退出DEBUG命令:Q3.显示内存命令:D 起始地址 结束地址4.修改内存命令:E 起始地址,连续修改打空格键打回车键退出E命令5.检查寄存器命令:R标志位显示 1 0CF CY NCZF ZR NZSF NG PLAF AC NAOF OV NVPF PE PODF DN UPIF EI DI6.修改寄存器命令:R 寄存器名7.小汇编命令:A 起始地址,不输入指令打回车键退出A命令8.反汇编命令:U 起始地址 结束地址9.文件命名命令:N 盘号:文件名10.读文件命令:L 内存地址11.写文件命令:W 内存地址10.读扇区命令:L 内存地址 盘号(0--A:,1--B:) 扇区号 扇区数11.写扇区命令:W 内存地址 盘号 扇区号 扇区数12.运行命令:G=起始地址 结束(断点)地址13.单步命令:T=起始地址 运行指令数,进入子程序内部14.单步命令:P=起始地址 运行指令数,不进入子程序内部15.内存搬家命令:M 起始地址 结束地址 目的地址实验二 数制。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.