一.实验目的
1.熟练掌握编写汇编语言原程序的基本框架
2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容
一个汇编语言程序从写出到最终执行的简要过程如下:
1) 编辑
可以用任意的文本编辑器来编辑源程序,只要最终将其存储为纯文本文件即可。一般保存为*.asm文件。
2) 编译
上机过程中,我们采用微软的masm5.0汇编编译器,文件名为masm.exe。我们的编译器在C:\masm5目录下,可以按照下面的过程来进行源程序的编译,以C:\1.asm为例:
进入DOS方式,进入C:\masm5目录,运行masm.exe,首先显示一些版本信息,然后提示输入将要被编译的源程序文件名。在输入源程序文件名时一定要指明路径,如果文件在当前路径下,只要输入文件名就可以,否则要输入全路径。在此,我们输入C:\1.asm.
输入源程序文件名后,程序继续提示我们输入要编译出的目标文件名,因为我们已经输入了源程序文件名为1.asm,则编译程序默认要输出的目标文件名为1.obj,所以我们可以不必另行指定文件名,直接按回车,编译程序将在当前目录下,生出1.obj文件。我们也可以指定生成的目标文件所在的目录,如想在“C:\windows\desktop”下生成目标文件1.obj,则可以输入“C:\windows\desktop\1”
确定了目标文件名称后,编译程序提示输入列表文件名称和交叉引用文件名称,这些时编译器将源程序编译为目标文件过程中产生的中间结果,我们直接按回车键忽略。
对源程序编译结束,编译器输出的最后两行告诉我们源程序是否有警告错误和必须要改正的错误。
3) 链接
对源程序进行编译得到目标文件后,需要对目标文件进行链接得到可执行文件。
我们使用微软的Overlay Linker3.6连接器,文件名为link.exe,假设连接器在C:\masm5目录下,我们按照下面的过程来进行程序的链接,以C:\masm5\1.obj为例
进入DOS方式,进入C:\masm5目录,运行link.exe,首先显示一些版本信息,然后提示输入将要被连接的目标文件名。此处我们输入”1”,按回车.程序继续提示我们输入要生成的可执行文件的名称,这是我们对一个程序进行连接要得到的最终结果。这里我们不必另行指定文件名,直接按回车,链接程序将在当前目录下,生成1.exe文件。
确定了可执行文件的名称后,连接程序提示输入映像文件的名称和库文件的连接,我们直接按回车键忽略即可。
最后对目标文件的连接结束,连接程序输出的最后一行告诉我们源程序是否有错误。如果尽出现一个警告错误:“没有栈段”,我们可以不理会。
4) 执行和调试
将生成的可执行文件执行:C:\masm5>1.exe,看不到任何结果,因为我们的程序没有向显示器输出信息。
为了观察程序的运行过程,使用Debug的相关命令来单步执行程序,查看每一条指令的运行结果。
进入C:\masm5后,我们输入“Debug 1.exe”,按Enter键,Debug将程序从1.exe中加载到内存,进行相关的初始化后设置CS:IP指向程序的入口。使用R命令查看各个寄存器的设置情况,使用U命令来查看我们写入的指令,使用T命令单步执行程序中的每一条指令,到达int 21,使用P命令执行,执行后,显示“Program terminated normally”,返回到Debug,表示程序正常结束。
注意:在DOS中运行程序时,是Command将程序加载到内存,所以程序运行结束后返回到command中,而在这里是debug将程序加载到内存,所以程序运行结束后返回到debug中。
三.实验任务

  1. 将下面的程序保存为t1.asm文件,生成可执行文件t1.exe;
    assume cs:codesg
    codesg segment
    mov ax,2000h
    mov ss,ax
    mov sp,0
    add sp,4
    pop ax
    pop bx
    push ax
    push bx
    pop ax
    pop bx
    mov ax,4c00h
    int 21h
    codesg ends
    end

记录第一次出错:没有把t1.asm文件放在MASM611的BIN文件下。放入之后出现“Assembling:t1.asm”.

小结:汇编语言程序的汇编以及建立过程:
编辑程序生成asm文件(t1.asm)——>汇编程序(masm t1.asm),将asm文件转换成ti.obj文件——>用LINK程序把obj文件转换成exe文件(link t1.obj)——>最后一步执行可以选择直接执行也可以选择使用debug命令单步执行

  1. 用Debug跟踪t1.exe的执行过程,写出每一步执行后相关寄存器中的内容

  1. PSP的前两个字节是CD 20,用Debug加载t1.exe,查看PSP的内容
    PSP的具体功能以及用法将会在后面的实验中逐渐提到,在这里可以先提前了解一下,这里的PSP是程序段前缀,这里的CD20是INT20h的机器码,可以先了解到这里,我会用一篇专门的博客来解释psp。
    四.实验报告
    调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

汇编实验三 汇编语言程序的调试与运行相关推荐

  1. 汇编语言程序的调试与运行

    实验一 汇编语言程序的调试与运行 1.实验目的及要求 实验目的: ①学习数据传送和算术运算指令的用法 ②熟悉在PC机上编辑.汇编.连接.调试和运行汇编语言程序的过程. 实验要求: 编程实现 SUM=a ...

  2. 汇编语言程序的建立、运行与调试

    实验一 汇编语言程序的建立.运行与调试 一.实验目的 熟悉汇编语言开发环境. 掌握EMU8086软件使用方法. 了解汇编语言的程序结构.调试一个简单的程序. 理解寻址方式的意义. 二.实验内容及要求 ...

  3. 汇编实验三:三个有符号数比较大小

    汇编实验三:三个有符号数比较大小 问题 源码 利用库函数io.inc 问题 给出三个有符号数,编写一个比较相等关系的程序: (1) 如果这三个数都不相等,则显示0: (2) 如果这三个数中有两个数相等 ...

  4. 采用汇编语言对c语言函数调用的方法求平均数 汇编实验报告,汇编语言调用c语言完成求平均值.docx...

    汇编语言调用c语言完成求平均值.docx <汇编语言程序设计>实验报告系别专业年级学号姓名2012年6月实验七汇编语言对C语言函数调用求平均值一.实验目的本实验主要达到以下目的:1.完成汇 ...

  5. 09、汇编语言程序的调试

    文章目录 01.带调试功能的虚拟机 02.Bochs虚拟机 2.1.BOCHS软件的下载和安装 2.2.Bochs虚拟机的配置 03.Bochs安装虚拟硬盘 04.创建主引导扇区程序 05.将程序写入 ...

  6. SCAU 汇编实验三

    目录 实验前置知识 1.将BX中的无符号数以二进制形式输出 2.将BX中的无符号数以八进制形式输出 3.将BX中的无符号数以十六进制形式输出 4.将BX中的无符号数以十进制形式输出 5.将BX中的有符 ...

  7. 2018-2019-1 20165234 实验三 并发程序

    任务一 •学习使用Linux命令wc(1) •基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 •客户端传一个文本文件给服务器 •服务器返加文本文件中的单词数 ...

  8. 计算机网络实验三:TCP Tahoe与Reno运行机制对比分析

    一.实验目的 学习TCP的拥塞控制机制并了解TCP Tahoe和TCP Reno协议的运行机制. 二.实验背景知识--TCP基于窗口的拥塞控制策略 1.1  加法增加乘法减少(AIMD)窗口算法 TC ...

  9. matlab一句一句调试,matlab程序怎样调试和运行

    具体操bai作步骤如下:1.首先,打du开Matlab软件zhi,单击[打开]或创建一dao个新的调试回文件,如下图答所示,然后进入下一步.2.其次,单击代码前面的横杠设置断点,如下图所示,然后进入下 ...

最新文章

  1. vivo手机计算机错误怎么弄,手机计算器出错,原因竟是人性化设计
  2. win7和mysql乱码,win7 mysql中文乱码怎么处理
  3. linux命令找目录,linux中何种指令可以查看当前所处的目录位置?
  4. 微软职位内部推荐-Senior Software Engineer_HPC
  5. webpack和react_使用React和Webpack进行简单的代码拆分
  6. (08)System Verilog 类继承
  7. 清华学霸被Facebook开除了
  8. pycharm和python一样吗_PyCharm中Directory与Python package的区别
  9. nvm npm node
  10. 如何写期刊论文的文献综述
  11. kettle打开spoon.bat后无反应
  12. Ubuntu清空回收站提示权限不够的解决办法
  13. EF migration conflicted with foreign key constraint
  14. C#中Dev配色修改
  15. 斗图表情包爬虫(基于多线程)
  16. 大文件数据传输会遇到哪些问题?
  17. VoLTE用户码号和卡
  18. 近30所高校,获教育部点名表扬!
  19. 可以实现内网穿透的几款工具
  20. 图片怎么压缩到100k?照片怎么压缩到指定大小

热门文章

  1. 计算机网络演化——p2p于网络
  2. 存款利率下降如何应对
  3. CNN Attention
  4. 计算有固定收入的党员每月所交纳的党费。月工资收入400元及以下者,交纳月工资总额的0.5%;月工资收入401~600元者,交纳月工资总额的1%;月工资收入601~800元者,交纳月工资总额的1.5%;
  5. deepin linux截图,Linux Deepin 截图工具将入驻Debian/Ubuntu软件中心
  6. 基于STM32的HX711模块的电子秤设计
  7. ubuntu1404 安装php5.6-fpm
  8. [人才招聘-日企独资上市企业,岗位真实有效]
  9. 华硕F80S安装并激活Windows7体验
  10. linux下运行htk,Linux下安装编译并且测试HTK语音识别库