用机器指令和汇编指令编程(修改版)

  • 实验名称 用机器指令和汇编指令编程(1)
  • 实验日期   2018.10.22
  • 学院:计软院
  • 专业:计算机科学与技术
  • 年级:2017级
  • 班次:5班
  • 姓名:陈奕明
  • 学号 20171308194

一、实验目的 
1. 掌握使用debug工具编写和调试汇编命令的方法

2. 掌握第1-2章所学的关于CPU、寄存器、内存的基础知识

3. 掌握第1-2章涉及的几条指令mov, add, sub, jmp的用法

二、实验准备 
1. 复习教材第1~2章内容,完成教材内相关检测点

2. 结合教材实验1 (P35)及公邮文件中心→实验下的 “实验1辅助文档.pdf”学习debug 工具用法。

三、实验内容 
1. 教材实验1(P35)

(1)练习教材 P35-45「预备知识:Debug 的使用」,学习 debug 启动、退出及常用指 令用法;

(2)在练习基础上,完成「2. 实验任务」

Tips: 「2. 实验任务」中每一项任务都可以在教材前序内容或练习中找到提示线索。建议先 完成「二、实验准备」中要求的内容及实验内容的第(1)项,这样完成「2. 实验任务」时会 很容易完成。比如: 实验任务(1)可参照教材P41-43的(7)完成; 实验任务(2)与教材 P20的检测点(2)相似且相关;

四、实验结论 
任务一:

把如下的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。

首先使用e指令按题目要求的写入机器码指令(随便找了个地址1000:0):

到达文本输入限制后没办法,只能先执行了...执行完后,看一下已经写入数据的内存单元的情况...嗯...数据是对的

继续输入并执行,执行完全部代码后,使用u指令反汇编机器码命令:

跟书上写明的汇编命令相符。

然后输入汇编命令:

中间又把1和字母l分不清了,出了个error。。。

命令输入完毕,-t命令单步执行:

和上课听讲的一样,对指定的寄存器进行数据的改写操作。

后面的命令行有点多就用-t+数字=执行往后的几条命令全部执行了:

最后的结果:

任务二:将下面三条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

mov ax,1

add ax,ax

jmp 2000:0003

解题思路:2的三次方就是8,再看下题目给我们的三条命令。执行完第一条后ax的值为1,执行完第二条命令后ax的值为2,那么就需要我们再执行这条语句7次了,所以就要使用jmp命令,通过改变CS和IP寄存器的值来使得CPU继续反复执行这条命令,所以往下又写了七句jmp 2000:0003使得CPU再反复执行其次该语句,从而使得AX中的值变为二的八次方。。。。这是最终结果。

最终实验截图

第三题

PC主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并且试图改变它。

实验截图如下:

试图修改但是失败了,看来是因为ROM的关系,无法修改。

第四题

向内存B8100H开始的单元中填写数据,如:

-e B810:0000 01 01 02 02 03 03 04 04

这是进行了一系列实验过后的结果:

有这么些结果和感悟:

再向寄存器写入数据时,每多两个字节的数据就会产生一个新的颜色区域,而且写入区域的CS码每产生一次进位,就会使得产生的色块区域产生换行,最终得到了这么些结果。

五、实验心得与感悟
这次实验主要实验了R命令(用于查看、修改寄存器中的内容)、D命令(查看内存中的内容)、E命令(修改内存中的内容)、U命令(反汇编命令)、T命令(执行代码行命令)

第四题经过这么多次的实验测试,看来这一段内存空间是显存。

我的电脑屏幕运行Dosbox窗口极小,最后查到按Alt+Enter可以进入全屏模式进行操作。

当初安装Dosbox时经历过,千万别把程序装在系统盘,否则会有权限问题。

暂时就这样把,肯定还有许多要学的,要完善的,好好学习汇编!!

2018-10-27  21:28:25于宿

原文地址:https://www.cnblogs.com/cymwn-com/p/9867855.html

时间: 2024-10-08 16:26:49

用机器指令和汇编指令编程(修改版)的相关文章

实验一 用机器指令和汇编指令编程

一.实验目的 1.熟悉基本debug命令:a.r.d.e.u.t 2.掌握汇编指令与机器指令的对应关系 3.掌握利用debug命令查看修改内存.寄存器的方法 二.实验要求 (1)仔细阅读实验教程中DEBUG的使用部分: (2)使用DEBUG中的A命令输入一段程序段: (3)用DEBUG中的R命令观察寄存器中数据的存放情况,改变寄存器的值: (4)用DEBUG中的D命令查看数据在内存中的表示方法: (5)用DEBUG中的E命令修改内存中的数据: (6)用DEBUG中的T命令执行一条语句: 三.实验

汇编实验二 用机器指令和汇编指令编程

实验二  用机器指令和汇编指令编程 任务一: (1)用E命令将内存单元0021:0~0021:7连续8个字节数据修改为30H,31H,32H,33H,34H,35H,36H,37H. (2)用A命令输入汇编指令: (3)用T命令单步执行: 在用T命令执行MOV SS,AX时,它的下一条指令MOV  SP,0100同时执行. (4)填写书上内容: 任务二: 观察如图实验过程,分析为什么2000:0~2000:f中的内容会发生改变. 任意时刻,SS:SP指向栈顶元素,初始时栈为空.初始时,栈顶为0B

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

·实验任务 (1)使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 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 bx,ax 01 d8         add  ax,bx b8 1a 00    mov ax,001ah bb 26 00    mov bx,002

查看CPU和内存,用机器指令和汇编指令编程【Debug模式】

命令 作用 举例 R 查看,改变CPU寄存器的内容 查看:r 改写:r ax D 查看内存中的内容 d 1000:0 f E 改写内存中的内容 e 1000:0 f U 将内存中的机器指令翻译成汇编指令 u 1000:0 T 执行一条机器指令 t A 以汇编指令格式向内存写入一条机器指令 a 1000:0 原文地址:https://www.cnblogs.com/toooney/p/10424981.html

用机器指令和汇编指令编程(1)实验报告

实验结论 实验任务(1) 1.用E命令将指令写入内存 首先用E命令向从1000:0开始的内存单元中写入了任务要求的机器码:然后用R命令查看CPU中寄存器状态,可以看到,CS=073FH.IP=0100H,指向内存073F:0100:接着用R命令修改CS.IP中的内容,使CS:IP指向1000:0.然后用T命令执行写入的指令,执行T命令后,1000:0处的指令b8 20 4e(mov ax,4E20H)得到执行.指令执行后,AX中的内容被改写为4E20H,IP改变为IP+3(因为mov ax,4E

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

 实验任务 一.使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 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 bx,ax 01 d8          add  ax,bx b8 1a 00     mov ax,001AH bb 26 00     mov

【汇编语言】——用机器指令和汇编指令编程

初入大二,刚刚接触和学习汇编语言这门课程,肯定有很多的不足和漏洞:本篇文章是关于王爽编著的<汇编语言>(第三版)第二章的章后实验的实验报告和总结. 一 实验环境的配置和测试 Debug是DOS,Windows都提供的实模式(8086方式)程序的调试工具.使用它,可以查看CPU各种寄存器中的内容,内存的情况和在机器码级跟踪程序的运行.64位win10系统下,可以通过安装DOSBox软件来配置一个虚拟的工作环境. 相关的软件放在我的百度云盘,还没有安装的可以通过以下链接下载. 链接: https:

用机器指令和汇编指令编程(1)

实验任务 (1) 1.用a命令以汇编指令的形式向内存写入指令 用t命令逐条执行写入命令 2.用e命令写入机器码 逐条执行结果同a命令相同 (2) 将指令写入从2000:0的内存单元中 ax=1,利用8次jmp算出2的8次方 (3) pc机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,找到这个日期并试图改变它 无法改变,因为C0000~FFFFF是各类ROM地址空间,只可读 (4) 向内存从B8100H开始的单元中填入数据 从0001:0000开始的单元填入数据

【汇编语言】实验2 用机器指令和汇编指令编程(2)

四.实验结论 任务一:使用debug,将下面程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空. 1.使用r命令查看各寄存器初始值. 2.使用a命令编写汇编指令. 3.使用t命令单步执行. 4.分析 此实验使用栈实现了寄存器值的交换 指令 ax bx ss sp mov ax,ffff FFFF 0000 073F 00FD mov ds,ax FFFF 0000 073F 00FD mov ax,2200   2200 0000 073F 00FD mov ss,ax   2200 0