微机原理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验报告
1实验的目的是学习8086/8088指令系统中一些基本指令的用法和程序的基本方法。2熟悉8086.8088汇编语言程序在PC机上建立、组装、连接、调试和运行的全过程。实验中,a、B、C、D四个数字以单字节压缩BCD码的形式存储在num存储器的四个单元中。然后,计算(a+b)-(c+D)并以Y1为单位,结果显示在屏幕上。在调试过程中,不断更改a、B、C、D的内容,并检查结果。本文提供了几组数据:1。A=09,B=06,C=04,d=072。A=38,B=41,C=29,d=34 3。A=70,B=23,C=42,d=41 4。A=63,B=73,C=62,d=50 3。实验调试过程1。使用DOS工具掩码和链接生成EXE文件2。使用调试工具编译并中断单击调试器。1使用-U命令反汇编程序②设置断点1检查a+B的结果是否正确。结果在23小时存储在A1中,结果正确。③设置断点2检查C+D的结果是否正确。如果结果存储在Al中30小时,则结果正确。④运行程序后,使用-D命令检查最终结果是否正确。数据段中的第五个地址是计算结果,它是正确的。⑤尤其在(a+b)-(c+D)中使用-E。如果前者比后者小,结果可能不正确。这时,我们应该判断借阅符号是否为负数。如果是负数,则使用(c+D)-(a+b),
并在结果中输出一个负号。三。已成功调试并检查结果。直接在DOS命令下运行程序添加.exe 或者在调试期间使用-G命令运行程序,并检查程序结果。4实验程序和DSEG程序框图。定义数据段编号DB 13h、27h、11h、12h;定义A、B、C、D Y1 DB?DSEG结束;数据段结束sseg段标准堆栈;定义堆栈DB 20 dup(?)sseg结束cseg段假设CS:cseg,ds:DSEG,SS:sseg start:MOV AX,DSEG MOV ds,AX MOV AX,sseg MOV SS,AX MOV AL,[NUM];将A复制到AL以添加AL,[NUM+1];A+B DAA MOV CL,AL;保存AL MOV AL,[NUM+2];将C复制到AL 以添加AL,[NUM+3];C+D DAA SUB CL,AL;(A+B)-(C+D)MOV AL,CL DAS MOV[NUM+4],AL MOV BL,AL;save AL和AL,0F0H;R SHIFT MOV CL,4 SHR AL,CL ADD AL,30H;获取ASCII MOV DL,AL MOV AH,02h int 21h MOV AL,BL;还原AL和AL,0Fh;取低位4位,加上AL,30H MOV DL,AL MOV AH,02h int 21h MOV ax,4c00h int 21h cseg end start end end 5。思考问题1。哪些调试命令可以用来查看和更改a、B、C、D的值?答:调试时使用-D命令查看a、B、C、D的值,使用-e命令更改a、B、C、D的值,过程如下:2。调试程序时,在哪里设置断点?简要介绍。答:检查程序时,应在容易观察结果的内存位置设置断点以检查
错误。例如,将断点设置为两个位置加一个减号以检查操作结果。如果结果不正确,使用二分法检查关键步骤。三。当a=90,B=34,C=33,d=44,a=12,B=19,C=25,d=33时,设置一个合适的断点,观察结果,解释错误原因,并改进程序使结果正确。答:错误原因:在减法中,没有考虑减法和减法的大小,这就导致了错误。修改程序:减法前比较(AL)和(CL)的大小,如果(AL)大,则在减法前交换两个数字,在输出结果前加“-”。2实验2的分支程序设计。实验目的1。学习通过键盘显示提示信息和输入字符的方法。2掌握分支程序的设计方法。2在实验内容中,在提示信息下,从键盘输入原代码代表的二进制十六进制有符号数字:当数字大于0时,该数字在屏幕上显示为正数;当数字等于0时,该数字在屏幕上显示为零;当数字小于0时,该数字显示为零大于0时,该数字在屏幕上显示为负数。三。测试调试过程:1。使用MASM和link工具编译代码并将其链接到exe文件。2使用调试工具调试程序。①使用-U指令反汇编程序。②在输入端设置断点,检查输入函数是否错误。③在分支1处设置断点,检查判断1是否有错误,A1=par