实验任务
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CUP中相关寄存器中内容的变化
机器码 | 汇编指令 |
---|---|
b8 20 4e | mov ax,4E20 |
05 16 14 | add ax,1416 |
bb 00 20 | mov bx,2000 |
01 d8 | add ax,bx |
89 c3 | mov bx,ax |
01 d8 | add ax,bx |
b8 1a 00 | mov ax,001A |
bb 26 00 | mov bx,0026 |
00 d8 | add al,bl |
00 dc | add ah,bl |
00 c7 | add bh,bl |
b4 00 | mov ah,0 |
00 d8 | add al,bl |
04 9c | add al,9c |
提示,可用E命令和A命令以两种方式将指令写入内存。
实践(用E命令)
在CS=2000 IP=0000上面执行
e 2000:0000
将机器码依次输入即可
实践(用A命令)
然后重复实践(E命令)的操作
(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3ee8036d858f8d23cf8d72bb787c712a.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3264983d79192e69dcf431d5fcd7e5ad.png)
这里AX中的100是十六进制,也就是2的8次方256,
利用了jmp转跳实现循环,1+1=2,2+2=4,4+4=8,8+8=10…这样依次下去
(3)查看内存中的内容
PC机主板上分的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它
首先ROM是只读存储器,写入数据去改变是没有结果的
所以我们只能看
根据提示FFF00H~FFFFFH的某几个单元中直接用D命令去查看一下
01/01/92,8086CUP模拟器中的ROM是1992年1月1日生产
意外查到一个可以查看电脑生产日期的方法
(4)向内存从B8100H开始的单元中填写数据
-e B810:0000 01 01 02 02 03 03 04 04
试了两组数据,发现这段值没有改
奇怪的现象,多次尝试发现数变了
因为是模拟机的原因B810:0000该段是向显存中输入数据,该数据会显示在屏幕上,而之所以数发生了改变,是因为输入的数据不一样,那么要显示的数也是不一样的,需要不一样,底层的数据也是不一样的