实验1 8086汇编指令编码和调试

一、实验目的 1. 掌握8086CPU、寄存器、内存(包括栈空间)的基础知识 2. 掌握汇编源程序组成与结构 3. 理解和掌握寄存器间接寻址方式[bx] 4. 掌握汇编指令mov, add, sub, jmp, push, pop,loop的用法,理解高级语言的表达和抽象机制 5. 熟练掌握使用debug工具编写和调试x86汇编命令的方法 6. 掌握汇编语言源程序编写→汇编→链接→调试的工具和方法   二、实验内容 任务1:自行练习,掌握工具用法。 任务2: 查看生产日期: 实验1 8086汇编指令编码和调试

修改生产日期,修改后再次查看生产日期:

实验1 8086汇编指令编码和调试

 结论:不能修改,因为我们向地址C0000-FFFFF的内存单元写入数据等于改写只读存储器中的内容。

任务3:

修改内存单元:

实验1 8086汇编指令编码和调试

 批量填充内存单元:

 实验1 8086汇编指令编码和调试

 修改内存单元后的效果,部分红心变为了紫色的菱形:

实验1 8086汇编指令编码和调试

任务4:

填空:依次为002E、002C、002A、0028、002A、002C、002E、0030

问题1:逻辑地址:0020:30  物理地址:00230

问题2:

实验1 8086汇编指令编码和调试

 问题3:数据空间内的数据没有发生变化。

实验1 8086汇编指令编码和调试

 问题4:在改变指令的顺序后,数据空间内的数据发生了变化。

 实验1 8086汇编指令编码和调试

 任务5:

 问题1:不是单步执行完这一指令就暂停,后面的指令mov sp, 30立刻被执行。

实验1 8086汇编指令编码和调试

 问题2:第一处存放下一条指令的地址,第二处表明随着push执行,地址往栈顶偏移。

 实验1 8086汇编指令编码和调试

 实验1 8086汇编指令编码和调试

任务6:

程序源码:

实验1 8086汇编指令编码和调试

 编译、连接、运行她是task6.asm,运行结果是0123456789:

实验1 8086汇编指令编码和调试

 实验1 8086汇编指令编码和调试

 查看task6.exe的程序段前缀PSP,前两个字节是CD 20:

实验1 8086汇编指令编码和调试

任务7:

补全源码:

assume cs:code
code segment
        mov ax,cs
        mov ds,ax
        mov ax,0020h
        mov es,ax
        mov bx,0
        mov cx,17h
s:      mov al,[bx]
        mov es:[bx],al
        inc bx
        loop s

        mov ax,4c00h
        int 21h
code ends
end

g命令运行到指定点和使用u命令反汇编0:200到复制代码长度这一段内存空间:

实验1 8086汇编指令编码和调试

 实验1 8086汇编指令编码和调试

 

三、实验总结

       通过这次实验,我掌握了debug、masm、link等一些工具的使用;也对一些基本的汇编指令进行了实践,得到了更加深刻的理解;同时理解了寄存器的间接寻址方式以及栈空间的应用;最后我的实践能力也在犯错与纠正的过程中得到了提高。

 

上一篇:实验1 8086汇编指令编码和调试


下一篇:实验1 8086汇编指令编码和调试