1、使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。
机器码 汇编指令
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 ax,bx
01 d8 add ax,bx
b8 1a 00 mov ax,001AH
bb 26 00 mov bx,0026H
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,9CH
提示,可用E命令和A命令以两种方式将指令写入内存。注意用T命令执行时,CS:IP的指向。
用a 命令向从1000:0开始的内存单元中写入汇编指令,然后使用t命令来执行写入的指令,如下图:
要注意CS 和IP的值。CS和IP处的指令为CPU当前要读取,执行的指令;
还有就是用t命令执行时,一定要让CS和IP的值指向2000:0 。
2、将下面三条指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
jmp的用法我感觉有点生疏,看了下书,Jmp 段地址:偏移地址 同时修改CS IP的内容。
这里把段地址修改成2000,偏移地址修改为0003,再看一下2000:0003对应的内存单元中的指令为add ax,ax,这样感觉就像C语言里的循环。
3、查看内存中的内容。
PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。
生产日期为92年一月一日。主板中的内容是不能改变的。
因为用的是Dosbox,读取的是虚拟主板的信息。不是真正的生产日期。
4、向内存从B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
总结:
平时课后没有很好地巩固练习,所以一些基本的指令含义还不太明白,要是有什么错的地方,希望各位可以帮忙指出来,
以后我一定加紧练习,熟能生巧。