上机实验1、2


title: 上机实验1、2
date: 2021-08-01 14:48:03
tags: 汇编语言笔记
categories: 汇编语言笔记

在工作室好哥哥们的影响下,也开始喜欢用博客记录自己的学习过程了。
https://afanbird.github.io/
个人博客的地址,由于可能不久之后会换电脑,暂且就不更新在个人博客上了(怕迁移麻烦),用CSDN更新,后面转载到个人博客上面的时候,也会方便很多。笔记是自己在学习中的汇编语言第三版书上的重点知识。之所以记录下来,也是为了自己以后复习知识的时候,能方便的复习。如有不对的地方,欢迎各位师傅指出,若有什么想法,也可以讨论交流,一起学习进步。

上机实验1 查看CPU和内存,用机器指令和汇编指令编程

(1)用R命令查看、改变CPU寄存器的内容。

若要修改一个寄存器中的值,比如AX中的值,可用R命令后加寄存器名来进行,输入“r ax”后按Enter键,将出现“:”作为输入提示,在后面输入要写入的数据后按Enter键,即完成了对AX中的内容的修改。

(2)使用“d 段地址:偏移地址”的格式,Debug将列出从指定内存单元开始的128个(一行16个字节,一共8行)内存单元的内容。

使用D命令,Debug将输出3部分内容

1.中间是从指定地址开始的128个内存单元的内容,用十六进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。

2.左边是每行的起始地址。

3.右边是每个内存单元中的数据对应的可显示的ASCII码字符。

在一进入Debug后,用D命令直接查看,将列出Debug预设的地址处的内容。

在使用“d 段地址:偏移地址”之后,接着使用D命令,可列出后续的内容。

也可以指定D命令的查看范围,此时采用“d 段地址:起始偏移地址 结尾偏移地址”的格式。

(3)用Debug的E命令改写内存中的内容。

可以用“e 起始地址 数据 数据 数据 数据。。。。。”的格式来进行

也可以采用提问的方式来一个一个地改写内存中的内容。

步骤如下:

1.输入e 1000:10,按Enter键。

2.Debug 显示起始地址1000:0010,和第一单元(即1000:0010单元)的原始内容;然后光标停在“.”的后面提示输入想要输入的数据,此时可以有两个选择;其一为输入数据(我们输入的是0),然后按空格键,即用输入的数据改写当前的内存单元;其二为不输入数据,直接空格键,则不对当前内存单元进行改写。

也就是

-d 1000:10 19

1000:0010 6D 61 72 6B 73 29 20 69 -6E 20

-e 1000:10

1000:10 6D.0 61.1 72.2 6B.1c

-

3.当前单元处理完成后(不论是改写或没有改写,只要按了空格键,就表示处理完成),Debug将接着显示下一个内存单元的原始内容,并提示进行修改。

4.所有希望改写的内存单元改写完毕后,按Enter键,E命令操作结束。

可以用E命令向内存单元中写入字符,比如,用E命令从内存1000:0开始写入数值1、字符“a”、数值2、字符“b”、数值3、字符“c”,可采用如下的方法进行。

-e 1000:0 1 ‘a’ 2 ‘b’ 3 ‘c’

-

-d 1000:0 f

1000:0000 01 61 02 62 03 63 00 -00 00 00 00 00 00 00 00

从上面的命令可以看出,Debug对E命令的执行结果是,向1000:0、1000:2、1000:4单元中写入数值1、2、3,向1000:1、1000:3、1000:5单元中写入字符“a”、“b”、“c”的ASCII值:61h、62h、63h。

也可以用E命令向内存中写入字符串,

比如,用E命令从内存1000:0开始写入:数值1、字符串“a+b”、数值2、字符串“c++”、字符3、字符串“IBM”。

-e 1000:0 1 “a+b” 2 “c++” 3 “IBM”

-

-d 1000:0 f

1000:0000 01 61 2b 62 02 63 2b 2b -03 49 42 4d 00 00 00 00

用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。

(4)用U指令查看从1000:0开始的内存单元的机器指令和它们所对应的汇编指令。

U命令的显示输出分为3部分,每一条机器指令的地址、机器指令、机器指令所对应的汇编指令

1000:0处存放的是写入机器码b8 01 00所组成的机器指令,对应的汇编指令是mov ax,1;

由此我们可以再一次看到内存中的数据和代码没有任何区别,关键在于如何解释。

(5)使用Debug的T命令可以执行一条或者多条指令。

(6)用Debug的A命令以汇编指令的形式在内存中写入机器指令。

在使用A命令写入指令时,我们输入的是汇编指令,Debug将这些汇编指令翻译为对应的机器指令,将它们的机器码写入内存。

上机实验2 用机器指令和汇编指令编程

1.预备知识:Debug的使用

(1)关于D命令。

D命令是查看内存单元的内容,可以用:“d 段地址:偏移地址”的格式查看指定的内存单元的内容,上次实验中,D命令后面的段地址和偏移地址都是直接给出的。

D命令也提供了一种符合CPU机理的格式:“d 段寄存器 :偏移地址”,以段寄存器中的数据为段地址SA,列出从SA:偏移地址开始的内存区间中的数据。

如;

-d cs:0 ;查看当前代码段中的指令代码

-d ss:0 ;查看当前栈段中的内容

-r ds

DS 1000

:1000

-d ds:0 ;查看从1000:0开始的内存区间中的内容

(2)在E、A、U命令中使用段寄存器。

同D命令一样,用段寄存器表示内存单元的段地址。

(3)下一条指令执行了吗?

Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行(中断机制)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值