收藏 分销(赏)

微机原理与接口技术-软件.doc

上传人:仙人****88 文档编号:9463619 上传时间:2025-03-27 格式:DOC 页数:9 大小:68.29KB
下载 相关 举报
微机原理与接口技术-软件.doc_第1页
第1页 / 共9页
微机原理与接口技术-软件.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述
实验一 指令与汇编语言基础 一、实验目的 (1)了解命令行操作基本方式和基本命令,掌握PC 环境下命令行方式的特点; (2)掌握汇编语言程序指令编辑、宏汇编、连接、运行基本概念; (3)熟练掌握动态调试程序TD 的常用命令和窗口功能,学会用TD 调试程,修改环境; (4)学会利用DEBUG 或TD 检查认识指令功能的正确方法。 二、 实验任务及内容 (1) 掌握进入全屏命令行方式、修改环境的方法; 启动开始菜单里的运行选项,键入cmd,即可启动命令行方式,在其属性栏中按图3.1-1 圈中所示设置可进入全屏命令行方式: (2) 确定源程序的存放目录,构建个人实验环境 (3) 建立、编辑汇编源程序,选择程序样本,构建典型的汇编程序框架,包括基本的数据段、堆栈段和代码段,编写程序实现如下功能:在data1 和data2 两个存储单元中分别存放两个16 进制数,将它们相加后所得值存入data3 中。 (4) 用汇编工具(MASM/TASM.EXE)汇编源程序产生OBJ 目标文件将所要编译的源程序文件(add.asm)放到带汇编工具的文件夹中,在全屏命令行模式下,进入该文件夹,输入tasm add.asm,回车后即可编译产生OBJ 目标文件。 (5) 用链接程序(LINK/TLINK.EXE)产生EXE 可执行文件产生OBJ 目标文件后,继续输入:tlink add.obj,回车后即可产生EXE 可执行文件。 (6) 用调试工具软件(TD.EXE/D)调试执行程序 用编辑软件,输入以下汇编语言源程序: ;将data1和data2中的两个四位16进制数相加 data segment data1 db 12H,34H ;加数1 data2 db 56H,78H ;加数2 data3 db 2 dup(?) ;和 data ends stacks segment stack db 256 dup(?) stacks ends code segment assume cs:code,ds:data,ss:stacks main proc far start:mov ax,data mov ds,ax mov ax,stacks mov ss,ax mov si,0 mov cx,2 ;设置循环次数 loop1:mov al,data1[si] ;取加数1 mov data3[si],al mov al,data2[si] ;取加数2 adc data3[si],al inc si loop loop1 mov ah,4ch ;程序结束返回 int 21h main endp code ends end start 三、 用tasm add.asm生成obj文件,用tlink生成exe文件,再用TD打开。 用 TD 将可执行文件调入,并进行调试; 四、① 在Windows 中启动TD a. 仅启动TD 而不载入要调试的程序 双击TD.EXE 文件名,Windows 就会打开一个DOS 窗口并启动TD。启动TD 后会显示一个版权对话框,这时按回车键即可关掉该对话框。 b. 启动TD 并同时载入要调试的程序 把要调试的可执行文件拖到TD.EXE 文件名上,Windows 就会打开一个DOS 窗口并启动TD,然后TD 会 把该可执行文件自动载入内存供用户调试。若建立可执行文件时未生成符号名表,TD 启动后会显示 “Program has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。 ② 观察CPU 寄存器、存储器环境 TD 启动后呈现的是一个具有窗口形式的用户界面,见图3.1-2,称为CPU 窗口。 ③ 单步、断点运行,观察中间结果,完成正常执行 TD 功能键F7 为跟踪进入(对CALL 指令将跟踪进入子程序),F8 为单步跟踪(对CALL 指令将执行完子 程序返回后才停下),F2 为在当前光标处设置/清除断点。通过单步,断点运行中观察数据区、各个寄存器值的变化,以验证程序运行是否正确。 ④ 修改当前运行环境,直接编写程序片断,验证指令功能 修改寄存器(AX、BX、CX、DX、SI、DI、BP、SP),并观察;修改段寄存器。 b. 修改存储器,并指定不同存储段。 c. 修改CS:IP,单步运行指定指令(F7 或F8),观察指令运行结果。 d. 将光标放置在TD 窗口的代码区右击,可显示代码区的局部菜单,见图3.1-3,选择相应功能进行 操作。 ⑤ 重点解决段存储结构和数据变量的定义与访问 访问数据段中具体位置的值时,可将光标放置在数据区,右击产生数据区菜单。 开始 调用程序并返回 保存现场 DS段初始化 赋值 调用程序并返回 赋值 调用程序并返回 赋值 结束 带进位相加 实验二 汇编语言程序设计 一、 实验目的 1、进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念; 2、熟悉掌握动态调试TD/DEBUG的常用命令或窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器等环境; 3、熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制及方法,了解DOS/BIOS功能调用的基本方法。 二、基本实验内容 (1)编写程序实现如下功能: ① 从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母 (其他字符不变)并按原顺序将这些字符在屏幕上显示出来。 ② 从键盘输入在0~65535 之间的十进制数,将其转换为16 进制数并在屏幕中显示出来,要求判断输 入字符串是否为在0~65535 之间的十进制数。 (2)复习TD 各种操作,并用DEBUG 调试程序,学会基本命令操作,并通过单步、设置断点等方法观 察中间结果,完成正常运行。 命令行方式下直接键入debug myfile.exe 回车(myfile 为待调试可执行程序),进入调试方式(显示-),键入H 回车显示全部命令、格式和功能。常用命令有:U(反汇编)、A(汇编输入指令程序)、R(寄存器显示/修改)、I(端口输入)、O(端口输出)、D(显示数据)、E(修改数据)。 除资源修改管理功能外,重点应用T(单步)、Tn(执行n 步)、P(过程/指令)、G××××(从当前CS:IP执行到断点××××)或G=××××1 ××××2(从××××1 执行到××××2 断点)调试实验程序。 二. 实验原理 运行汇编程序必备的软件环境:DOS操作系统,汇编软件系统。 汇编系统盘应包含如下文件:MASM宏汇编程序文件 (TASM)、LINK连接程序文件 (TLINK)、CREF索引程序文件(也可不用)、EDIT文本编辑程序(或PE等文本编辑程序)。 用户通过屏幕编辑程序EDIT键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为(.ASM)。 执行宏汇编程序MASM----生成目标文件.OBJ,辅助文件LST,CRF。用汇编语言编写的源程序必须是一个完整的源程序,才能经过宏汇编程序MASM的汇编,生成一个目标程序。为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。 汇编语言编写的源程序经过汇编程序(MASM)汇编后产生了目标程序(.OBJ),该文件是将源程序操作码部分变成了机器码,但地址是可浮动的相对地址(逻辑地址),因此必须经过连接程序LINK连接后才能运行。连接程序LINK是把一个或多个独立的目标程序模块装配成一个可重定位的可执行文件,扩展名为.EXE文件。此外还可以产生一个内存映象文件,扩展名为.MAP。连接程序执行过程为:由连接程序LINK产生的扩展名为.MAP文件,它实际上是连接程序的列表文件,它给出了每个段的地址分配情况及长度,(加/M开关――外部变量相对地址。 汇编后产生的交叉索引文件,扩展名为.CRF,它列出了源程序中定义的符号(包括:标号、变量等)和程序中引用这些符号的情况。 如果要查看这个符号表,必须使用CREF.EXE的文件,它根据.CRF文件建立一个扩展名为.REF的文件,而后再用DOS的TYPE命令显示,就可以看到这个符号使用情况表。 调试工具有:DEBUG、TD。其中,TD. EXE(简称TD)是一个具有窗口界面的程序调试器, 是Borland 公司产品Turob Debugger 的IA-16版本。利用TD,用户能够调试已有的可执行程序(后缀为EXE);用户也可以在TD中直接输入程序指令,编写简单的程序。 DEBUG能够在最小环境下运行汇编程序(代码级而非符号级)、提供极简单的修改手段(寄存器、存储器、I/O等)、提供用户与计算机内部联系的窗口(命令行):显示、修改、单步、过程、断点、文件装入、上装。是典型的命令行方式调试工具,其I O 命令用于硬件测试、 三、 程序流程图 (1)、data segment input 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 ends stacks segment stack db 256 dup(0) stacks ends code segment assume cs:code,ds:data,ss:stacks main proc far start: mov ax,data mov ds,ax mov ax,stacks mov ss,ax loop1: mov dx,offset string1 mov ah,09h int 21h mov dx,offset input mov ah,0ah int 21h mov dx,offset string2 mov ah,09h int 21h call disp mov dx,offset string3 mov ah,09h int 21h mov ah,1 int 21h cmp al,'y' jz loop1 mov ah,4ch int 21h main endp disp proc near xor cx,cx mov cl,input[1] mov si,2 again: mov dl,input[si] cmp dl,61h jb next cmp dl,7ah ja next sub dl,20h next: mov ah,02h int 21h inc si loop again ret disp endp code ends end start (2)、data segment right db 1 input db 6,7 dup(0) output dw 0000h ten dw 000ah string1 db 0dh,0ah,'please input your number (0~65535)',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 0~65535',0dh,0ah,'$' data ends stacks segment stack db 256 dup(0) stacks ends code segment assume cs:code,ds:data,ss:stacks main proc far start: mov ax,data mov ds,ax mov ax,stacks mov ss,ax loop1: mov output,0000h mov dx,offset string1 mov ah,09h int 21h mov dx,offset input mov ah,0ah int 21h mov right,1 call change cmp right,0 jz error mov dx,offset string2 mov ah,09h int 21h mov ax,output mov dl,ah shr dl,4 call disp mov dl,ah and dl,0fh call disp mov dl,al shr dl,4 call disp mov dl,al and dl,0fh call disp jmp go error: mov dx,offset string4 mov ah,09h int 21h go: mov dx,offset string3 mov ah,09h int 21h mov ah,1 int 21h cmp al,'y' jz loop1 mov ah,4ch int 21h main endp change proc near clc xor ax,ax xor bx,bx xor dx,dx mov cl,input[1] mov si,2 again: mov bl,input[si] cmp bl,30h jb error1 cmp bl,39h ja error1 sub bl,30h dec cl cmp cl,0 jz over mov ax,1 push cx loop2: mul ten loop loop2 pop cx mul bx add output,ax jc error inc si jmp again over: add output,bx jnc over1 error1: mov right,0 over1: ret change endp disp proc near push dx push ax cmp dl,9 jbe num add dl,7 num: add dl,30h mov ah,02h int 21h pop ax pop dx ret disp endp code ends end start
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服