实验三 编程、编译、连接、跟踪

学号:20171308150 姓名:江漪雯 班级:17计科4班

实验结论

  一、练习1

  第一步,编写汇编源程序 t1.asm,源程序代码如图 1-1 所示。

第二步,对源程序 t1.asm 进行汇编、连接、运行、调试

首先打开DOSBOX界面,输入如下指令,进入edit界面。

然后会出现以下界面,点击Enter进入。

输入指定代码,并保存为t1.asm。

然后进行编译

连接

运行

1)运行程序,观察程序输出结果是什么?

36

2)将 line4 和 line9 种寄存器 dl 的值分别修改为 0~9 中任何一个数字,重新汇编->连接->运行,观察结果的变化。

我改为了 4和8。

然后分别进行汇编,连接和运行。

得到运行结果为48。

(3)用debug对生成的可执行文件 t1.exe 进行调试。

① 使用r命令查看,观察寄存器cx的值是多少;观察寄存器ds和cs的值是多少,他们之间是否满足关系(cs)=(ds)+10H?

CS=076A,DS=075A.CS=DS+10.故满足。

② PSP(程序段前缀)的头两个字节是CD 20,用debug查看PSP的内容,验证是否如此。

可得知确实如此。

③ 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。

④ 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。

可得知我的运行结果一个为4,一个为8。

二、练习 2

第一步,编写汇编源程序 t2.asm,源程序代码如图 1-2 所示。

将其命名为t2.asm。

第二步,对源程序 t2.asm 进行汇编、连接、运行、调试

1)对 t2.asm进行汇编,连接后,得到可执行文件 t2.exe。运行 t2.exe,观察程序运行结果,验证是否在屏幕左上方出现红色的数值36。

我的电脑直接运行显示不出,在执行前需要进行一次清屏操作,即cls命令。

2)如果(1)结果得到验证,重新打开 t2.asm,尝试将源代码中 line7 的 0433h->0432h,line10 的 0436h->0439h,然后重新汇编、连接,可得到执行文件 t2.exe。使用cls命令清屏后,再次观察程序运行结果。

将源代码中 line7 的 0433h->0432h,line10 的 0436h->0439h,然后重新汇编、连接,可得到执行文件 t2.exe,出现红色数字29。

使用cls命令清屏后,出现蓝色字母36。

总结与体会

本章需要熟练掌握一个汇编程序从写出到最终执行的简要过程。第一步,编写汇编源程序;第二步,对源程序进行编译连接;第三步执行文件中的程序。这三个步骤必须按照顺序来。在编写源程序的时候,如果程序没有返回,在编译的时候是不能表现出来的,被编译器发现的错误只能是语法错误。

通过查询网络,我了解到mov [bx],XXXXh是指向内存单元为ds:[bx]写入xxxxxh的数据。这个实验通过改变数据的值能够变化输出的数字和数字的颜色。

原文地址:https://www.cnblogs.com/jywe/p/9977304.html

时间: 2024-08-04 16:11:31

实验三 编程、编译、连接、跟踪的相关文章

实验三 编程,编译,连接,跟踪

任务一 编写汇编源程序,源程序代码如图 这次实验的延伸思考和分析很丰富,有关每行汇编指令的功能以及程序实现的功能. 各自源代码运行结果不同,实现不同的数值显示. (1)如上图所示,运行结果是36 接着按照要求,修改数字,重新汇编,观察结果. (2)得到结果为11,可见数值产生变化 (3)验证其满足(cs)=(ds)+10H (4)上图是利用u命令反汇编,观察得到的结果 (5)最后用t.p命令进行单步调试,观察所得结果. 任务二 用同样的方法,编写汇编源程序,如下图: 按照要求进行编译操作,发现产

汇编语言:实验三 编程、编译、连接、跟踪

1)将下列程序保存为t1.asm,生成t1.exe assume cs:codesg codesg segment mov ax,2000H mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00H int 21H codesg endsend 2)用Debug跟踪t1.exe执行过程,写出每一步执行后相关寄存器内容和栈顶内容 3)PSP头2个字节是CD20,用Debug加载t1.e

汇编语言_实验三_编程、编译、连接、跟踪

四.实验结论 1.       练习1 第一步,在记事本中输入实验要求中提供的代码,结果如下: 将其以文件名t1.asm另存为到E:/masm. 第2步,为方便后续操作,此处先准备一个批处理文件: 同样将其放入E盘masm路径下,重命名为process.bat. (1)进入并配置好DSBox环境,使用process t1对t1.asm进行编译.连接并运行: 屏幕上出现36. (2)将修改line 4和line 6中寄存器dl增加的值,发现line 4中写入的数值是屏幕上显示的第一位数字1,lin

实验3 编程、编译、连接、跟踪

预备知识: 一个汇编语言程序从写出到执行的简要过程: 一:编写汇编源程序: 二:对源程序进行编译连接:可执行文件包含两部分内容:1.程序(指令机械码)和数据(程序定义的数据).2.相关信息描述 三:执行可执行文件中的程序 课本P94: (1) 将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe. assume cs:codesg   codesg segment           mov ax,2000H           mov ss,ax           mov sp

实验三:跟踪分析Linux内核的启动过程 ----- 20135108 李泽源

实验要求: 使用gdb跟踪调试内核从start_kernel到init进程启动 详细分析从start_kernel到init进程启动的过程并结合实验截图撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下: 题目自拟,内容围绕Linux内核的启动过程,即从start_kernel

MySQL数据库实验三:连接查询

实验三    连接查询 实验名称:连接查询(2课时) 一.实验目的 理解JOIN语句的操作和基本使用方法,掌握内连接.外连接.自身连接的概念和使用. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1. 查询每个学生及其选修课程的情况 SELECT  Student.*,SC.* FROM     Student,SC WHERE  Student.Sno = SC.Sno: 2.检索至少选修课程号为C2和C4的学生学号 SELECT X.S# FROM SC

实验报告(实验三)

北京电子科技学院(BESTI) 实     验    报     告 课程: 密码系统设计基础                     班级: 1352班.1353班 姓名:刘浩晨.王玥                学号:20135318. 20135232 成绩:             指导教师:娄嘉鹏       实验日期:2015.11.24 实验密级:        预习程度:        实验时间:15:30—18:00 仪器组次:          必修/选修:        

实验作业:使gdb跟踪分析一个系统调用内核函数

实验作业:使gdb跟踪分析一个系统调用内核函数(我使用的是getuid) 20135313吴子怡.北京电子科技学院 [第一部分] 根据视频演示的步骤,先做第一部分,步骤如下 ①更新menu代码到最新版 ②在代码中加入C函数.汇编函数 ③在main函数中加入makeconfig ④make rootfs ⑤可以看到qemu中增加了我们先前添加的命令: ⑥分别执行新增的命令 [第二部分]gdb跟踪分析一个系统调用内核函数 ①进入gdb调试 ②设置断点,继续执行: ③相对应的得到这样的结果: ④查看我

实验三:实时系统的移植

北京电子科技学院(BESTI) 实     验    报     告 课程: 密码系统设计基础                     班级: 1453 姓名:彭垚            学号:20145317 成绩:             指导教师:娄嘉鹏       实验日期:2016.11.23 实验密级:        预习程度:        实验时间:10:00-12:00 仪器组次:          必修/选修:                  实验序号:3 实验名称:  实