汇编语言实验教程一(王爽汇编语言第4版)

一、实验的预设置

1、设置DOSBox窗口大小

找到安装目录下的 DOSBox 0.74-3 Options.bat 文件,右键打开,(不要点击编辑),找到

fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=1780x900
output=opengl

将windowresolution调整为自己觉得合适的大小,我这里调成1780x900,大小较为合适,随后保存重启DOSBox窗口即可。

2、将映射初始化

为避免每次启动都需要重复执行映射的麻烦,我们将其直接初始化

image-20240807122815363

根据窗口中的路径,我们找到 dosbox-0.74-3.conf 文件,右键用记事本打开,在文件底部加入
mount c d:\Wangshuang_masmsetup
c:
(注:c后面为所下载资源文件目录,请勿直接照抄)

保存后重启DOSBox,此时加载界面如下,为我们省去了每次打开DOSBox都要进行映射的麻烦。image-20240807123412196

二、常用的Debug指令

1、R命令:查看、修改寄存器中的内容

​ 查看: image-20240807163710109
​ 修改:

image-20240807164114674

2、D命令:查看内存中的内容

  • 默认范围查看: D 段地址:偏移地址 //查看从给出地址开始的128个内存单元里的内容

    image-20240807164719433

  • 指定位置范围查看: D 段地址:起始偏移地址 结尾偏移地址 //查看所给出起始地址到结束地址的内存单元里的内容

    image-20240807165020159

  • 单独查看: D 段地址:所需查看地址 所需查看地址 //指定位置范围查看的特殊应用

image-20240807165228697

3、E命令:修改内存中的内容

  • 批量修改: E 起始位置 数据 数据 数据 数据 数据 数据………

    image-20240807165637115

  • 逐个修改 E 起始地址+回车 进入提问方式修改内存单元内容
    输入数据后+空格 修改下一单元数据(不需要修改的单元直接空格跳过)
    所有数据输入完后,回车键结束操作

image-20240807170208849

4、U命令:将内存中的内容解释为机器指令和对应的汇编指令

将内存中的内容解释为机器指令和对应的汇编指令: U 段地址:起始地址

image-20240807170706163

5、T命令:执行CS:IP指向的内存单元处的指令

指令执行: T


根据已有知识,我们已经可以尝试在内存中写入并执行一个汇编程序

例如,完成一个计算2的四次方的汇编程序

机器码										对应的汇编指令
B8 02 00									mov ax,2
01 C0										add ax,ax
01 C0										add ax,ax
01 C0										add ax,ax
-E 1000:0 B8 02 00 01 C0 01 C0 01 C0  //将汇编指令对应机器码写入内存
-D 1000:10							  //查看内存写入情况
-U 1000:0							  //用u命令将内存单元中的内容翻译成汇编指令显示
-RCS								  //修改CS寄存器中内容,使CS:IP指向程序写入单元
-IP									  //修改IP寄存器中内容,使CS:IP指向程序写入单元
-T									  //执行指令

执行结果如下:(注意观察ax值的变化)

image-20240807172600740

image-20240807172633887

6、A命令:以汇编指令的形式向内存中写入指令

在内存单元中以机器码的形式写入汇编程序过于繁琐,因此在汇编语言中有专门用于写入汇编指令的A命令

  • -A 段地址:偏移地址 //从指定单元开始写入
  • -A //从预定地址开始写入

image-20240807173453239

三、实验

image-20240807235938984

  • 使用A命令写入汇编指令

image-20240807175101878

  • 使用U命令查看汇编指令是否写入以及写入指令是否有误

image-20240807175138387

  • 使用R命令将CS:IP修改为写入汇编指令起始位置

image-20240807175213846

  • 使用T命令执行汇编指令

image-20240807175400586

image-20240808000509066

  • 使用A命令写入汇编指令,使用R命令修改CS:IP,随后使用T命令执行汇编指令

image-20240807180357087

image-20240807180549242

image-20240808000701334

image-20240807180735439

image-20240807181556820

由P12可知,地址A000H~FFFFH为各个ROM的地址空间,其无法修改。

image-20240808001007604

image-20240807182430699

image-20240807182510725

image-20240807182554393

DlR-1723059308066)]

由P12可知,地址8000H~9FFFH为显存地址空间,修改后效果如上图。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值