用机器指令和汇编指令编程(1)实验报告
实验结论
实验任务(1)
1.用E命令将指令写入内存
首先用E命令向从1000:0开始的内存单元中写入了任务要求的机器码;然后用R命令查看CPU中寄存器状态,可以看到,CS=073FH、IP=0100H,指向内存073F:0100;接着用R命令修改CS、IP中的内容,使CS:IP指向1000:0。然后用T命令执行写入的指令,执行T命令后,1000:0处的指令b8 20 4e(mov ax,4E20H)得到执行。指令执行后,AX中的内容被改写为4E20H,IP改变为IP+3(因为mov ax,4E20H的指令长度为3个字节),CS:IP指向下一条指令。接着继续用T命令逐个执行,最后CS:IP指向1000:0021,说明指令总长度为21个字节。
2.用A命令将指令写入内存
用A命令向从1000:0开始的内存单元中写入了任务要求的汇编指令,其他操作同上。
实验任务(2)
首先用A命令将任务要求的指令写入从2000:0开始的内存单元中,然后用T命令从2000:0处开始执行指令,执行8次后,得到结果AX=0100H。
实验任务(3)
表示生产日期的数据存放在FFF0:00F6到FFF0:00FE的内存单元中,它们的ASCII码意义为01/01/92。
实验任务(4)
用E命令写入数据,再用D命令读取数据。
现象如图:改变填写数据后,第二次使用D命令时,内存单元并没有显示之前用E命令存放的数据,而是其他数据。改变填写地址没有变化。
实验总结与体会
通过本次实验,我基本掌握了使用debug工具编写的方法和几个基本调试汇编命令。这次实验让我认识到亲自上机操作的重要性,只是在课堂上学到的知识是远远不够的,上机后才发现有些操作要多练才能掌握。
在实验中,我也遇到了一些困难,比如:debug一行的空间有限,不能一次输入大量数据。在实验任务(1)中,我在用E命令将指令写入内存时,由于机器码过于冗长,不能在同一行输入完,但自动换行时不能继续输入,只能把代码分成两部分分别输入执行,这浪费了一些时间。这也让我认识到汇编指令相对于机器码的优势和方便之处。