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

Posted auspice

tags:

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

(注:本文默认数字为16进制数)

实验2.1

首先:使用 e 命令修改 0021:0~0021:f 数据,及修改后查看是否正确写入。

技术分享图片

  输入代码前的预判:

mov ax,0021
mov ds,ax

mov ax,2200
mov ss,ax

mov ss,ax

mov sp,0100

mov ax,[0]             ;ax=3130;
add ax,[2]             ;ax=3130+3332=6462;
mov bx,[4]             ;bx=3534;
add bx,[6]             ;ba=3534+3736=6C6A;

push ax                ;sp=00FE;修改的内存单元的地址是2200:00FE,内容为6462
push bx                ;sp=00FC;修改的内存单元的地址是2200:00FC,内容为6C6A
pop  ax                ;sp=00FE;ax=6C6A;弹出栈顶6C6A的值赋给AX
pop  bx                ;sp=0100;bx=6462;弹出栈底6462的值赋给BX

push [4]               ;sp=00FE;修改的内存单元的地址是2200:00FE,内容是3534
push [6]               ;sp=00FC;修改的内存单元的地址是2200:00FC,内容是3736

  用a命令输入代码。

  技术分享图片

  使用t/p命令单步执行命令

技术分享图片

  实验结果与预期一样,证明书上知识的准确与真实性。达到实验效果。

实验2.2

  实验代码

1 mov ax,2000    ;将2000赋给AX
2 mov ss,ax    ;将AX的值赋给SS,由于物理原因,不能直接赋值。
3 mov sp,10    ;将10赋给sp,栈顶是20010,
4 mov ax,3123   ;将3123赋给AX
5 push ax        ; AX进栈
6 mov ax,3366    ;将3366值赋给AX    
7 push ax        ;AX出栈

  在debug的状态下,输入上述代码,并使用 e 命令修改 2000:0~2000:f 的值,及修改后查看的部分 。

技术分享图片

  使用t命令单步调试每一行汇编指令,并使用 d 命令查看 2000:0~2000:f 的值。

技术分享图片

  猜测:由于某种机制,导致单步运行,中断时将无关元素不停地压入栈内。

 实验总结与体会:

    汇编语言是门靠近底层的语言,学习这门语言可以了解到计算机底层工作机制。这些机制繁琐、复杂、易错,学习过程让我深刻地体会到了初代计算机人的心酸。但同时能够帮助我们更好地理解计算机的运行,与学习高级语言。这反而激起我对汇编这门语言的兴趣。 

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

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

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

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

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

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

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