实验一 乘法运算实验
一、 实验目的:
1、了解调试程序DEBUG的常用命令和功能。 2、掌握多字节乘法运算程序的编写方法。 3、学会程序调试方法。
二、实验原理
序号 0????命令 ? 显示Debug命令列表。 功 能 ?? 1???? ? 2????a 汇编8086/8087/8088记忆码。 c 比较内存的两个部分。 ? 3??? ? 4??? ? 5??? ? 6??? ? 7????h 执行十六进制运算。 g 运行在内存中的可执行文件。 f 使用指定值填充一段内存。 e 从指定地址开始,将数据输入到内存。 d 显示部分内存的内容。 ? 8????i 显示来自特定端口的1字节值。 ? 9????l 将文件或磁盘扇区内容加载到内存。 ? 10? ? 11??? 12? ? 13? ? 14? ? m /n o p q 复制内存块中的内容 为l或w命令指定文件,或者指定正在测试的文件的参数。 向输出端口发送1个字节的值。 执行循环、重复的字符串指令、软件中断或子例程。 停止Debug会话。 15? ? 16???r s 显示或改变一个或多个寄存器。 在部分内存中搜索一个或多个字节值的模式。 ? 17? ? 18?? ? 19?? ? 20?? ? 21?? ? 22?? ? 23???t u w xa xd xm xs 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和Debug下一步要执行的指令的解码形式。 反汇编字节并显示相应的原语句。 将被测试文件写入磁盘。 分配扩展内存。 释放扩展内存。 映射扩展内存页。 显示扩展内存的状态。 ?
三、实验内容:
将两个无符号数相乘,将结果数存入规定地址。 被乘数和乘数的存放地址及数据如下: 名称 地址 数据 被乘数 2000:0000 2000:0001 2000:0002 2000:0001 2000:0004 2000:0007 2A 30 15 1B 乘数 乘积 注意:数据低位在前,高位在后。 四、实验报告内容:
1、实验用源程序:
开机选择“开始”→“运行”→输入“command”→输入“debug”调出debug应用程序。
Debug源程序:
D 2000:0000 ;查看部分内存内容 E 2000:0000 2A 30 15 1B ;写入数据
D 2000:0000 ;查看输入后的数据
A 回车 ;写程序
MOV AX,2000 MOV DS,AX MOV AX,[0000] MOV BX,[0002]
MUL BX ;让AX乘以DX,结果存入DX:AX MOV [0004],AX MOV [0007],DX
INT 20H ;正常中断程序
Ctrl+M ;退出编程,由键盘输入 G ;运行程序
D 2000:0000 ;查看程序运行结果
2、实验结果分析
输出结果显示为72-61 18-05结果正确。
实验中遇到的问题,在debug里输入程序要细心,如果输入有误为保证结果的正确应重新打开debug程序。实验中发现输入的大小写对程序的结果没有影响。
实验二 除法运算实验
一、 实验目的:
1、了解调试程序DEBUG的常用命令和功能。
2、掌握多字节除法运算程序的编写方法。 3、学会程序调试方法。
二、 实验内容:
将两个无符号数相除,将结果数存入规定地址。 被除数和除数的存放地址及数据如下: 名称 被除数 除数 商 余数 地址 2000:0010~0013 2000:0014~0015 2000:0016~0017 2000:0018~0019 数据 2A3B4C5D 7C5D 数据低位在前,高位在后。
三、 实验报告内容:
1、 实验用源程序
按照实验一中的方法调出debug: Debug源程序:
D 2000:0000 ;查看部分内存内容 E 2000:0000 5D 7C 5D 4C 3B 2A ;写入数据
D 2000:0000 ;查看输入后的数据
A ;写程序
MOV AX,2A3B MOV DX,4C5D MOV BX,7C5D MOV AX,[0010] MOV DX,[0012] MOV BX,[0014]
DIV BX ;被除数DX:AX除BX,商存入AX,余数存到DX
MOV [0016],AX MOV [0018],DX
INT 20H ;正常中断程序
Ctrl+M ;退出编程,由键盘输入 G ;运行程序
D 2000:0000 ;查看程序运行结果
2、 实验结果分析 实验正确结果:7D-FF 9E-11
实验中应注意的问题,在输入数值时应高低位颠倒输入,程序运算时是先进后出。遇到的问题:当输入正序时得到的结果是EE-56 E7-6F(为错误结果)。