实验二指令与汇编语言基础及汇编语言程序设计

上传人:夏** 文档编号:558312401 上传时间:2023-10-14 格式:DOC 页数:7 大小:32.50KB
返回 下载 相关 举报
实验二指令与汇编语言基础及汇编语言程序设计_第1页
第1页 / 共7页
实验二指令与汇编语言基础及汇编语言程序设计_第2页
第2页 / 共7页
实验二指令与汇编语言基础及汇编语言程序设计_第3页
第3页 / 共7页
实验二指令与汇编语言基础及汇编语言程序设计_第4页
第4页 / 共7页
实验二指令与汇编语言基础及汇编语言程序设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《实验二指令与汇编语言基础及汇编语言程序设计》由会员分享,可在线阅读,更多相关《实验二指令与汇编语言基础及汇编语言程序设计(7页珍藏版)》请在金锄头文库上搜索。

1、 东南大学微机实验及课程设计实验报告实验一、二 指令与汇编语言基础及汇编语言程序设计姓 名: 孙权 学 号: 08008229 专 业: 自动化 实 验 室: 计算机硬件技术 实验时间: 2010年04月13日 报告时间: 2010年04月20日评定成绩: 审阅教师: (报告正文部分的格式):(要求:正文部分一律用五号字,宋体,1.25多倍行距。一级大标题靠左,四号,宋体,加粗。二级大标题靠左,小四,宋体,不加粗。)报告文字宜精炼,内容建议如下:一. 实验目的与内容(概述)(含简单文字叙述)实验目的:1) 了解命令行操作基本方式和基本命令,掌握PC环境下命令行方式的特点2) 掌握汇编语言程序指

2、令编辑、宏汇编、连接、运行基本概念3) 熟练掌握动态调试程序TD的常用命令和窗口功能,学会用TD调试程序,修改环境4) 学会利用DEBUG或TD检查认识指令功能的正确方法5) 进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念6) 熟练掌握动态调试程序TD/DEBUG的常用命令或窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器等环境7) 熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS功能调用的基本方法实验内容:1)掌握进入全屏命令行方式、修改环境的方法2)确定源程序的存放目录构建个人实验环境3)建立、编辑汇编源程序,构建典型的汇编程序框架4)用

3、汇编工具(MASM/TASM.EXE)汇编源程序产生OBJ目标文件5)用链接程序(LINK/TLINK.EXE)产生EXE可执行文件6)用调试工具软件(D 基本实验原理(或基本原理) (含简单文字叙述,关键电路原理图,程序框图)1) 微型计算机指令系统及指令寻址方式2) 汇编语言源程序的格式、组成、伪操作命令3) DOS软中断和系统功能调用,BIOS调用三. 方案实现与测试(或调试)(含实验步骤分步进行-调试-测试,关键/重要的程序片段,程序框架无需)实验步骤:1. 将目标源代码(如add.asm)放入带汇编工具的文件夹中;2. 全屏启动命令行模式,进入上述文件夹,对源程序编译链接,编译出错则

4、改正,生成可执行程序(.exe)文件; 3. 直接键入debug myfile.exe回车(myfile为待调试可执行程序),用debug常用命令调试程序;4. 启动TD并载入.exe文件,熟悉TD界面(全局菜单、代码区、数据区、寄存器区、堆栈区、标志区等);5. 使用TD进行调试程序的一些基本操作:l 查看数据区的数值:选择数据区的局部菜单中的Goto,在其输入框内输入要查看的数据区地址,确认后即可查看数据区特定范围的存储情况。也可输入地址1899:0000,则左下数据窗口显示从1899:0000开始的数据块。 l 直接运行:TD功能键F9,从当前CS:IP开始运行程序,直到断点或结束,观察

5、程序运行的结果。 l 单步运行:使用TD功能键F7,每按一次程序向下运行一句,同时观察数据区、寄存器区、标志区的相应变化,验证程序是否运行正常。 l 断点运行:载入程序后,将光标放置在要设置断点的指令上,使用TD功能键F2即可设置断点,直接运行程序,当执行到该指令时将停止执行,这时可观察各个寄存器及存储器的值,可以验证程序运行是否正常。 l 直接添加指令:选择代码区局部菜单中的assemble选项,在其编辑框中直接输入指令确认后即可完成添加,单步运行可查看该指令的功能和执行结果。6. 通过字符串的变换和输入输出程序string.asm和十进制数转化为16进制程序num.asm熟悉和掌握汇编语言

6、程序的典型数据结构设计、典型程序流控制方法,并用TD调试。程序:(1)程序名:string.asmdata segmentinput db 100,100 dup(0)string1 db 0dh,0ah,please input your strings,0dh,0ah,$string2 db 0dh,0ah,the strings you input are:,0dh,0ah,$string3 db 0dh,0ah,Do you want to continue (y/n):,0dh,0ah,$data endsstacks segment stackdb 256 dup(0)stacks

7、 endscode segmentassume cs:code,ds:data,ss:stacksmain proc farstart: mov ax,datamov ds,axmov ax,stacksmov ss,axloop1: mov dx,offset string1mov ah,09hint 21hmov dx,offset inputmov ah,0ahint 21hmov dx,offset string2mov ah,09hint 21hcall dispmov dx,offset string3mov ah,09hint 21hmov ah,1int 21hcmp al,y

8、jz loop1mov ah,4chint 21hmain endpdisp proc nearxor cx,cxmov cl,input1mov si,2again:mov dl,inputsicmp dl,61hjb nextcmp dl,7ahja nextsub dl,20hnext: mov ah,02hint 21hinc siloop againretdisp endpcode endsend start(2)程序名:num.asmdata segmentright db 1input db 6,7 dup(0)output dw 0000hten dw 000ahstring1

9、 db 0dh,0ah,please input your number (065535),0dh,0ah,$string2 db 0dh,0ah,The number you input is:,0dh,0ah,$string3 db 0dh,0ah,Do you want to continue (y/n):,0dh,0ah,$string4 db 0dh,0ah,The number you input is not from 065535,0dh,0ah,$data endsstacks segment stackdb 256 dup(0)stacks endscode segment

10、assume cs:code,ds:data,ss:stacksmain proc farstart: mov ax,datamov ds,axmov ax,stacksmov ss,axloop1: mov output,0000hmov dx,offset string1mov ah,09hint 21hmov dx,offset inputmov ah,0ahint 21hmov right,1call changecmp right,0jz errormov dx,offset string2mov ah,09hint 21hmov ax,outputmov dl,ahshr dl,4

11、call dispmov dl,ahand dl,0fhcall dispmov dl,alshr dl,4call dispmov dl,aland dl,0fhcall disp四提高与创新研究(说明提高与创新部分实验情况,简述实验步骤,电路和关键/重要的程序片段)实验中使用TD对8086/8088指令系统的六大类指令,即数据传送指令、算术运算指令、逻辑运算和移位指令、串操作指令、控制转移指令、处理器控制指令,单步运行、观察各个寄存器及存储器的运行结果,进行功能验证。部分程序如下:MOV AX,0001HMOV BX,0002HPUSH AXPUSH BXPOP BXPOP AXMOV A

12、X,0001HMOV BX,0002HMOV CX,0009HADD AX,BXLOOP 地址五分析与总结(总结现象,分析原因和结果,评价实验(设计/效果/调试/测试方法)1. 断点运行调试小结:a. 设置多个断点用于调试较大的程序,即程序中有多个模块、多个通路时用,比较方便,在执行时不论走哪条通路,程序都可以在断点处停下来,以便调整程序。b. DEBUG下进行断点运行的调试使用运行命令G 地址地址地址其中地址为执行的起始地址,以CS中内容作为段地址,以等号后面的地址为偏移地址,再后面的地址为断点地址。 在命令行中只有起始地址,没有断点地址,则程序在执行时不中断。DEBUG规定最多设置10个断

13、点地址。断点地址为程序中断处的偏移地址,段地址在CS中。 c. 在TD中设置断点:将光标放置在要设置断点的指令上,使用TD功能键F2即可设置断点。设置断点后直接运行程序,当执行到该指令时将停止执行,这时可观察各个寄存器及存储器的值,可以验证程序运行是否正常。 d. 断点的设置位置,一般设置在中断命令前或后的第一条指令位置处。2. DEBUG常用命令小结: (1) 汇编命令A 格式:a. A 段寄存器名:偏移地址 b. A 段地址:偏移地址 c. A 偏移地址 d. A 功能:用该命令可以将汇编语言程序直接汇编进入内存。 (2) 显示内存命令D 格式:a. D 地址 b. D 地址范围 c. D

14、 功能:显示指定内存范围的内容。(3) 修改存储单元内容命令 E 格式:a. E 地址 内容表 b. E 地址 功能:a. 用命令所给定的内容表去代替指定地址范围的内存单元内容。 b. 一个单元一个单元地连续修改单元内容。 其中内容表为一个十六进制数,也可以是用单引号括起的一串字符。 (4) 检查和修改寄存器内容命令 R格式:a. R b. R 寄存器名 功能:a. 显示CPU内部所有寄存器的内容和全部标志位的状态。 b. 显示和修改一个指定寄定器的内容和标志位的状态。(5) 跟踪与显示命令 T、Tn 格式:a. T地址或 T 地址 b. T地址条数或 T 地址条数 功能:a执行一条指定地址处的指令,停下来,显示CPU所有寄存器内容和全部标志位的状态,以及下一条指令的地址和内容。 b为多条跟踪命令,从指定地址

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号