华南理工大学微机与接口实验报告四实验题目原理流程图代码截图完整版.docx
《华南理工大学微机与接口实验报告四实验题目原理流程图代码截图完整版.docx》由会员分享,可在线阅读,更多相关《华南理工大学微机与接口实验报告四实验题目原理流程图代码截图完整版.docx(46页珍藏版)》请在冰豆网上搜索。
华南理工大学微机与接口实验报告四实验题目原理流程图代码截图完整版
华南理工大学微机与接口实验报告(四实验-题目原理流程图代码截图完整版)
微机原理实验报告
班级:
2012级电子科学与技术卓工班
姓名:
黄中一
学号:
201236460273
序号:
评阅分数:
实验一
一、实验目的
1、学会如何建立汇编源文件ASM
2、学会调用MASM宏汇编程序对源文件进行汇编,获得目标程序OBJ及LST列表文件
3、学会调用LINK连接程序汇编后的目标文件OBJ连接成可执行的文件EXE
4、学会使用DEBUG调试程序把可执行文件装入内存并调试运行,用D命令显示目标程序,用U命令对可执行文件反汇编,用G命令运行调试。
二、实验设备
装有MASM软件的IBMPC机
三、实验内容
1、汇编程序对源程序进行编译,生成扩展名为OBJ的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。
2、DEBUG程序各种命令的使用方法
功能
命令格式
使用说明
显示内存单元内容
D地址
从指定地址开始显示40H个字节或80H个字节
修改内存单元内容
E地址
先显示地址和单元内容等待输入修改的内容
检查和修改寄
存器的内容
R
显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式
反汇编
U地址
从指定地址开始反汇编16个或32个字节
汇编
A地址
从指定地址直接输入语句并从指定指定汇编装入内存
跟踪
T=地址
从指定地址开始逐条跟踪指令
运行
G=地址
无断点,执行正在调试的指令
退出
Q
退出DEBUG返回DOS
3、实验过程
①、在edit环境,写字板,记事本等中输入源程序。
或双击屏幕上“未来汇编”快捷方式进入编辑环境输入源程序。
②、保存,输入文件名如A1.asm,并将其与MASM的三个可执行文件放在同一目录下。
③、在DOS环境下(可用windows下的命令提示符进入),用MASM生成目标文件A1.OBJ
进入DOS环境,将当前目录设置为存放MASM的路径.如图所示:
如果MASM的软件放在C:
\TOOLS\WJYL则先要进入到该子目录下,进入该子目录的方法为,cdc:
\退到c盘的根目录下,cdtools
cdWJYL
则如上所述进入该目录下,然后
输入MASM,可见屏幕上有四个提问,按如下格式回答:
Sourcefilename[.ASM]:
a1↙
Objectfilename[A1.OBJ]:
↙
Sourcelisting[NUL.LST]:
a1↙
Cross-reference[NUL.CRF]:
a1↙
④、键入DIR/W可见目标文件A1.OBJ和列表文件A1.LST。
⑤、在DOS环境下,用连接文件LINK连接程序生成可执行文件A1.EXE输入LINK,可见屏幕有四个提问,按以下格式回答:
ObjectModules[.OBJ]:
A1↙
RUNFile[A1.EXE]:
↙
ListFile[NUL.MAP]:
↙
Libraries[.LIB]:
A1↙
用DIR命令,查看生成的各文件
⑥、用TYPEA1.LST↙命令观看列表文件
⑦、在DOS环境下,用DEBUG跟踪程序来安装运行A1.EXE程序
1)输入DEBUGA1.EXE↙可见有提示符“—”
2)输入-R↙可见CPU内所有寄存器内容和标志位状态如下:
AX=0000BX=0000CX=0100DX=0000SP=0028BP=0000SI=0000DI=0000DS=1112ES=1112SS=1126CS=1129IP=0000NVUPDIPLNZNAPONC
1129:
0000B82211MOVAX,1122
3)输入-U,可看到11行指令,再用U命令可看到余下的各指令。
4)输入运行命令-G=0028可见程序执行到INT21H句便停下来,屏幕展示此刻各寄存器的内容如下:
AX=4C00BX=0007CX=0001DX=0000SP=0028BP=0000SI=0000DI=0000DS=1122ES=1112SS=1126CS=1129IP=0028NVUPDIPLZRACPECY
1129:
0028CD21INT21
5)输入-RIP可修改指令指针
6)输入-T↙可看到执行第一条指令的结果
输入-T=03↙可看到3条指令执行的过程
7)输入-Q↙退出DEBUG,回到DOS状态。
注:
如果masm的过程中出现错误,可参看错误提示,在相应的行和列去寻找错误。
可直接在dos环境下键入edit进入编辑环境。
附:
标志寄存器对应的含义
实验例程1:
DATASEGMENT
ARRAY1DB2,5,0,3,-4,5,0,0AH,0FH
ARRAY2DB3,5,4,-2,0,8,3,-0AH,20H
COUNTDB$-ARRAY2
LENDB?
SUMDB20HDUP(0)
DATAENDS
STACK1SEGMENTPARASTACK'STACK'
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
MOVBX,-1
MOVCX,0
MOVCL,COUNT
NOZERO:
INCBX
MOVAL,ARRAY1[BX]
ADDAL,ARRAY2[BX]
MOVSUM[BX],AL
LOOPNENOZERO
JEENDO
INCBL
ENDO:
MOVLEN,BL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验例程2:
显示字符串
;SAMPLEPROGRAMDISPLAYMESSAGE;注释行
STACKSEGMENTPARASTACK‘STACK’;定义堆栈段
DB1024DUP(0);在存储器的某个区域建立一个堆栈区
STACKENDS
DATASEGMENT;定义数据段
MESSAGEDB‘THISISASAMPLEPROGRAM.$’;在存储器中存放供显示的数据
DATAENDS;数据段结束
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK;告诉汇编程序段范围
START:
PROCFAR;将程序定义为远过程
PUSHDS
MOVAX,0;可用XORAX,AX
PUSHAX;标准序,以便返回DOS操作系统
MOVAX,DATA
MOVDS,AX;初始化DS
LEADX,MESSAGE;MESSAGE地址偏移量给BX
MOVAH,9
INT21H;调用DOS9号中断功能显示字符串。
RET;返回DOS操作系统
STARTENDP;过程结束
CODEENDS;代码段结束
ENDSTART;整个程序汇编结束
例3人机交互:
DATASEGMENT
BUFDB100;缓冲区长度
DB?
;预留用来存放实际长度
DB100DUP(?
);接收来自键盘的输入下信息
MESGDB‘WHATISYOURNAME?
$’
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVDXOFFSETMESG
MOVAH,09H;屏幕显示提示信息
INT21H
MOVDXOFFSETBUF
MOVAH,0AH;接收键盘输入
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验二数码转码编程及程序调试
一.实验目的
1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的理解;
2.进一步熟悉键盘使用方法;
3.进一步熟悉调试程序的方法。
二.实验设备
装有汇编软件的IBMPC机一台
三.实验内容及步骤
计算机输入设备输入的信息一般ASCii码或BCD码表示的数据或字符,CPU处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设有必须一外设的要求变为ASCII码,BCD码或七段显示码等。
因此,在应用软件中各累数制的转换和代码的转换是必不可少的。
计算机于外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。
一.将ASCII码表示的十进制数转换为二进制数
1.程序流程
十进制数可表示为:
代表十进制1,2,3,···9,0;
由式
(2)可归纳十进制数转换为二进制数的方法:
从十进制的最高位Dn开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。
程序流程图如图2-2。
这里我们规定:
被转换的ASCII码十进制数存放在3500h~3504h单位中。
而转换结果在3510~3511单位中。
2.实验步骤
(1)输入程序并检查无误。
(2)在3500~3504h单元存入十进制12的ASCII码,即e3500,并输入3030303132。
(3)g=2000,运行程序,并用CTR+C来中断程序返回监控态。
(4)用d3510查看结果,应为35100C00
(5)反复试几组数,考查程序的正确性。
流程图如下:
代码如下:
地址(H)助记符注释
2000MOVSI,3500;源地址
2003MOVDI,3510;结果地址
2006MOVBX,000A;乘数10
2009MOVCX,0004;计数
200CMOVAH,00;AH清零
200EMOVAL,[SI];取被转换数
2010SUBAL,30;ASCII码变十进制数
2012IMULBX;高位(AX)*(BX)送AX
2014ADDAL,[SI+01];取下一位
1017SUBAL,30;ASCII码减30变十进制数
2019INCSI;源地址指针+1
201ALOOP2012;CX-1,若CX不等于零则继续
201CMOV[DI],AX;若CX不等于零则存结果
201EINT3
运行结果截图:
二.将十进制数的ASCII码转换为BCD码
1.程序流程
将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。
把它转换成BCD码后,再按位分别存入350A起始的内存单元内。
若输入的不是十进制的ASCII码,则显示FF.
2.实验步骤
(1)输入程序并检查无误。
(2)在3500H——3504H单元中存入五位十进制数的ASCII码,即
E3500↙,并输入31,32,33,34,35。
(3)G=2000↙,运行以上程序。
(4)D350A↙,显示结果为:
0000:
350A0102030