汇编语言实验2 用机器指令和汇编指令编程

Posted master-sun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言实验2 用机器指令和汇编指令编程相关的知识,希望对你有一定的参考价值。

四、实验结论

任务一:使用debug,将下面程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

1.使用r命令查看各寄存器初始值。

技术分享图片

2.使用a命令编写汇编指令。

技术分享图片

3.使用t命令单步执行。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

4.分析

此实验使用栈实现了寄存器值的交换

指令 ax bx ss sp
mov ax,ffff FFFF 0000 073F 00FD
mov ds,ax FFFF 0000 073F 00FD
mov ax,2200   2200 0000 073F 00FD
mov ss,ax   2200 0000 2200 0100
mov sp,0100
mov ax,[0] C0EA 0000 2200 0100
add ax,[2] C0FC 0000 2200 0100
mov bx,[4] C0FC 30F0 2200 0100
add bx,[6] C0FC 6021 2200 0100
push ax C0FC 6021 2200 00FC
push bx C0FC 6021 2200 00FC
pop ax 6021 6021 2200 00FE
pop bx 6021 C0FC 2200 0100
push [4] 6021 C0FC 2200 00FE
push [6] 6021 C0FC 2200 00FC

  注:背景涂色的两行代码,在使用t命令单步执行时,同时进行。

6.书后习题

技术分享图片

内存单元地址:DS:[ ]

栈地址:SS:SP

 

任务二:仔细观察图3.19中的实验过程,然后分析,为什么2000:0~2000~f中的内容会发生改变?

1.使用a命令输入汇编指令;

使用e命令修改2000:0段内存单元的值,使之为0;

使用d命令查看修改后的内存单元的值。

技术分享图片

 

2.使用t命令单步执行;

使用d命令查看2000:0段内存单元的值。

技术分享图片

 

3.分析

ss:sp,意味着栈顶指针,汇编指令mov修改了ss:sp,使之变为2000:0。

当对栈进行操作时,ss:sp随着入栈出栈的操作变化,会改变这一段内存单元的值。


五、总结与体会

通过任务一,我了解到,汇编指令对ss和sp是同时进行操作的,当两条语句在相邻的上下行时,使用t命令单步执行,这两个指令会同时进行;我还进一步理解了,当使用到内存单元的地址[ ]时,默认以DS寄存器里的值作为段地址,去访问DS:[ ];我还知道了,pop ax是把栈顶元素的值,弹到ax里,不是之前的错误理解(以为把ax弹出,其实一点都讲不通)。

通过实验二,我加深了对栈顶指针SS:SP的理解,明白了在编写汇编指令时,要注意栈内存单元的选取,不能影响其他正常的操作。

 

以上是关于汇编语言实验2 用机器指令和汇编指令编程的主要内容,如果未能解决你的问题,请参考以下文章

汇编实验二 用机器指令和汇编指令编程

实验2 用机器指令和汇编指令编程

汇编实验二 用机器指令和汇编指令编程

汇编实验2 用机器指令和汇编指令编程

[汇编语言]实验一:查看CPU和内存,用机器指令和汇编指令编程。

汇编语言实验1 用机器指令和汇编指令编程