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


一、实验目的

  1. 掌握8086CPU、寄存器、内存(包括栈空间)的基础知识

  2. 掌握汇编源程序组成与结构

  3. 理解和掌握寄存器间接寻址方式[bx]

  4. 掌握汇编指令mov, add, sub, jmp, push, pop,loop的用法,理解高级语言的表达和抽象机制

  5. 熟练掌握使用debug工具编写和调试x86汇编命令的方法

  6. 掌握汇编语言源程序编写→汇编→链接→调试的工具和方法

二、实验结论

  实验任务2:

   

    上图为使用d命令查看生产日期的截图。

      

     上图为使用e命令修改后查看,发现修改失败。

  

  实验任务3:

        

     上图为使用e命令修改内存单元后的情形,在屏幕左上角出现了5个图案。

       

    上图为使用f命令批量填充内存单元后的情形,屏幕下方出现许多图案。

   

      上图为查看该段内存内容,并尝试使用e命令对其进行修改,修改后发现屏幕下方的部分图案发生改变。

 

  实验任务4:

  填空:2E  ->  2C  ->  2A  ->  28  ->  2A  ->  2C  ->  2E  ->  30

    问题1:逻辑地址:20:30

      物理地址:00230H

    问题2:

  

     问题3:

  

      此时数据空间内的数据没有变化。

   问题4:

  

      按照截图修改pop指令的顺序后,使用d命令查看发现顺序发生改变,原因是因为出栈的顺序为70 80    50 60    30 40   10 20

 

 实验任务5:

    问题1:使用t命令单步执行mov ss, ax时,并不是单步执行完这一条指令就暂停,而是紧接着执行下一条指令即mov sp, 30。

  

       问题2:

  

 

    

      从实验中发现截图中第一处黄线划的08 01为当前代码的偏移地址,第二处黄线划的是当前代码的段地址,执行完mov sp, 30后偏移地址为0108,最后执行完push ax后在0110 即 10 01 而在执行入栈操作后,栈顶指针向前移动2个字节,所以整体向前移动2个字节。

 

  实验任务6:

    源码: 

  

 1 assume cs:code
 2 code segment
 3 start:
 4     mov cx, 10
 5     mov dl, '0'
 6     s: mov ah, 2
 7     int 21h
 8     add dl, 1
 9     loop s
10     
11     mov ah, 4ch
12     int 21h
13 code ends
14 end start

  

  

      上为使用masm和link对程序进行汇编和链接过程的截图。

  

     上为运行该程序后输出的结果。

  

      上为在debug中查看task5.exe的程序段前缀PSP的截图,由图可见,程序前两个  字节是为CD 20。

 

  实验任务7:

    源码:

 

 1 assume cs:code
 2 code segment
 3   mov ax, 076Ah
 4   mov ds, ax
 5   mov ax, 0020h
 6   mov es, ax
 7   mov bx, 0
 8   mov cx, 200
 9   s: mov al, [bx]
10   mov es:[bx], al
11   inc bx
12   loop s
13 
14   mov ax, 4c00h
15   int 21h
16 code ends
17 end

 

   

 

   

     上为使用u命令反汇编查看,发现复制成功。

三、实验总结

     通过本次实验我学到了许多关于汇编语言的实践操作方面的知识,了解并实践了如何在Dosbox中运用在书本上学到的汇编语言程序设计的知识。我发现在使用e命令在显存部分修改值后,在屏幕上会显示相对应的图案,如果继续使用其他代码如d命令查看等,将输出在屏幕上的图案覆盖掉后,因为屏幕上的内容发生改变,所以显存中的数据也会随之发生改变,这就导致连续的两次d命令查看内存中的内容可能存在差异。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM