使用Debug,将下面的程序段写入内存,逐条执行,观察每条执行指令后CPU中相关0寄存器中内容的变化。
机器码 汇编指令 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,al b4 00 mov ah,0 00 d8 add al,bl 04 9c add al,9c
使用r命令修改CS和IP中的内容,使CS:IP指向1000:0000
方法一:用e命令向内存中写入机器码
用U命令查看内存中机器码的含义
方法二:用a命令将指令写入内存
用T命令执行CS:IP指向的内存单元1000:0中存储的命令
分析:
Ax中原始数据为0000,bx中原始数据为0000.
CS:IP指向1000:0000
汇编指令 | ax | bx | CS:IP |
mov ax,4e20 | 4e20 | 0000 | 1000:0003 |
add ax,1416 | 6236 | 0000 | 1000:0006 |
mov bx,2000 | 6236 | 2000 | 1000:0009 |
add ax,bx | 8236 | 2000 | 1000:000B |
mov bx,ax | 8236 | 8236 | 1000:000D |
add ax,bx | 046C | 8236 | 1000:000F |
mov ax,001a | 001a | 8236 | 1000:0012 |
mov bx,0026 | 001a | 0026 | 1000:0015 |
add al,bl | 0040 | 0026 | 1000:0017 |
add ah,bl | 2640 | 0026 | 1000:0019 |
add bh,al | 2640 | 4026 | 1000:001B |
mov ah,0 | 0040 | 4026 | 1000:001D |
add al,bl | 0066 | 4026 | 1000:001F |
add al,9c | 0002 | 4026 | 1000:0021 |
第二题
将下面三条指令写入从2000:0开始的内存单元中,利用这三条指令计算2^8
mov ax,1
add ax,ax
jmp 2000:0003
第二题
使用r命令使CS:IP指向2000:0000
用a命令将指令写入内存 用U命令查看内存中机器码的含义
用T命令执行CS:IP指向的内存单元2000:0中存储的命
分析:
Ax中的原始数据为0000,bx中的原始数据为0000.
CS:IP指向2000:0000
汇编指令 | ax | bx | CS:IP |
mov ax,1 | 0001 | 0000 | 2000:0003 |
add ax,ax | 0002 | 0000 | 2000:0005 |
jmp 2000:0003 | 0002 | 0000 | 2000:0003 |
add ax,ax | 0004 | 0000 | 2000:0005 |
jmp 2000:0003 | 0004 | 0000 | 2000:0003 |
add ax,ax | 0008 | 0000 | 2000:0005 |
jmp 2000:0003 | 0008 | 0000 | 2000:0003 |
add ax,ax | 0010 | 0000 | 2000:0005 |
jmp 2000:0003 | 0010 | 0000 | 2000:0003 |
add ax,ax | 0020 | 0000 | 2000:0005 |
jmp 2000:0003 | 0020 | 0000 | 2000:0003 |
add ax,ax | 0040 | 0000 | 2000:0005 |
jmp 2000:0003 | 0040 | 0000 | 2000:0003 |
add ax,ax | 0080 | 0000 | 2000:0005 |
jmp 2000:0003 | 0080 | 0000 | 2000:0003 |
add ax,ax | 0100 | 0000 | 2000:0005 |
jmp 2000:0003 | 0100 | 0000 | 2000:0003 |
2的8次方=256=0100H
第三题
PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变他
用r命查看CPU寄存器的内容
用d命令查看内存fff0:0000处的内容
生产日期存在fff0:00f5至fff0:00fc的内存单元中,生产日期为01/01/92.
用d命令将fff0:00f5至fff0:00fc内存单元中的数据提取出来
使用e命令将fff0:00fc内存单元中的数据改为25
再次用d命令将fff0:00f5至fff0:00fc内存单元中的数据提取出来
Fff0:00fc内存单元中的数据未修改,ROM是只读存储器,只能读取不能写入。