欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编——debug实验1

程序员文章站 2024-03-23 22:18:52
...

汇编——debug实验1

参考《汇编语言》第三版 王爽 著

一、实验任务

查看CPU和内存,用机器指令和汇编指令编程

  1. 使用debug,将下列程序段写入内存,逐条执行
    汇编——debug实验1

汇编——debug实验1

二、实验过程

1. 使用E命令或者A命令将指令写入内存,并用T命令执行

E命令写入机器码 A命令写入汇编语言。

机器码:

b8 20 4e

05 16 14

bb 00 20

89 c3

01 d8

b8 1a 00

bb 26 00

00 d8

00 dc

00 c7

b4 00

00 d8

04 9c

> debug
  ;写入内存
  -e  1000:0 b8 20 4e 05 16 14 bb 00 20 89 c3 01 d8 b8 1a 00 bb 26 00 00 d8 00 dc 00 c7 b4 00 00 d8 04 9c
  ;读内存
  -d 1000:0 

下图为写入之后的内存结果

汇编——debug实验1

   -u 1000:0 ;将内存单元中的内容翻译为汇编指令显示

汇编——debug实验1

	;查看当前cpu寄存器的状态
	-r
	-rcs ;修改CS中的内容
	-rip ;修改IP中的内容

汇编——debug实验1

;执行指令
-t

汇编——debug实验1

注意一个点:当执行ADD AL,BL之后,66+9cH 没有向AH进位,此时寄存器AL和AH相互独立。

汇编——debug实验1

2. 利用a命令写入汇编并执行,实现2的五次方

;将三条指令从2000:0的内存单元中开始写入。
mov ax,1 	;2000:0
add ax,ax  	;2000:3
jmp 2000:0003	;2000:5

汇编——debug实验1

3. 在内存FFF00~FFFFF中查找生产日期并试图修改

汇编——debug实验1

汇编——debug实验1

说明无法被修改

8086机内的内存地址内存分布情况如下:
汇编——debug实验1

在0000~ 9FFFF的内存中读取数据,实际上是在读取主随机存储器中的数据,向地址A0000~ BFFFF的内存单元中写数据,就是向显存中写入数据,这些数据会被显卡输出在显示器上,在地址C0000~ FFFFF的额你存单元中写入数据时无效的,因为这等于改写只读存储器中的内容。

读取主随机存储器中的数据,向地址A0000~ BFFFF的内存单元中写数据,就是向显存中写入数据,这些数据会被显卡输出在显示器上,在地址C0000~ FFFFF的额你存单元中写入数据时无效的,因为这等于改写只读存储器中的内容。

相关标签: assembler dosbox