实验- 用机器指令和汇编指令编程
1- 教材实验一结论
(1)通过以下两种方式将以下程序段写入内存:e命令和a命令。
b8 20 4e mov ax,4E20H 05 16 14 add ax,1416H bb 00 20 mov bx,2000H 01 d8 add ax,bx 89 c3 mov bx,ax 01 d8 add ax,bx
e命令写入0200:0开始的内存单元

修改CS寄存器中的内容为0200,IP寄存器中的内容为0000后,使用t命令,逐条执行这个程序段

可以发现AX,BX中的内容随着指令中的执行而改变,IP寄存器中的内容在执行完一个指令后,会自动指向下一条指令的地址(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方.
mov ax,1 add ax,ax jmp 2000:0003

接下来用t命令执行这个程序段
调试开始(ax起初是0):

调试结束(ax最后为8):

(3)查看内存中的内容
从FFF00H~FFFFFH中找到生产日期,并试图改变它
找到类似生产日期的位置在FFF0:00F5至FFF0:00FC内存单元中

试将其值修改为09/10/20

可见修改值的操作无效,因为向地址C0000~FFFFF的内存单元中写入数据是无效的,因为它是一个只读存储器ROM
(4)向内存从B8100H开始的单元中填写数据

可以看到向B8100开始的内存单元中修改数据,会显示出一些彩色的图标,这是因为A0000~BFFFF在8086PC机内是显存地址空间
2.教材实验二结论
(1)使用debug将下面的程序段写入内存,逐条执行
mov ax,0022 mov ds,ax mov ax,2200 mov ss,ax mov sp,0100 mov ax,[0] ax= 5150 add ax,[2] ax = A4A2 mov bx,[4] bx= 5554 add bx,[8] bx = ACAA push ax sp = 00FE 修改的内存单元的地址是: 2200:00FE 内容为:A4A2 push bx sp = 00FC 修改的内存单元的地址是: 2200:00FC 内容为:ACAApop ax sp = 00FE AX=ACAApop bx sp = 00FC BX = A4A2push [4] sp = 00FE 修改的内存单元的地址是:2200:00FE 内容为:5554push [6] sp = 00FC 修改的内存单元的地址是: 2200:00FC 内容为:5756
内存单元改写:

调试开始:

调试过程:

mov ax,2000:将2000送入寄存器ax中

五、实验总结
学习此应用程序使我获得了汇编语言领域的一些知识,并了解了机器的功能。
学会了dosbox中的debug工具的几个常用指令 实践的知识:8086机的内存空间的划分,内存单元地址的编写,栈的使用 仍未解决的知识:申明栈空间时的存储空间中的一串乱码究竟是何含义?为什么执行mov ss,ax操作时,顺便执行了mov sp,10。

浙公网安备 33010602011771号