实验一初级程序的编写与调试实验一、实验目的(1) 掌握汇编语言程序设计的基本方法和技能;(2) 熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;(3) 熟练掌握宏汇编程序MASM的使用;(4) 熟练掌握链接程序LINK的使用。
二、实验要求(1) 掌握汇编语言程序设计上机过程;(2) 回答思考问题;(3) 记录实验结果。
三、实验内容编写一个名字为的源程序,该程序的功能是在计算机屏幕上显示一个字符串“HELLO!”。
四、实验提示按以下操作步骤进行实验。
(1) 编辑源程序利用Windows XP操作系统附件中的“记事本”或者DOS编辑器编写如下源程序:DATA SEGMENTS1 DB 'HELLO!','$'DATA ENDSSTACK SEGMENT PARA STACKDB 64 DUP()STACK ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AH,09HMOV DX,OFFSET S1INT 21HRETMAIN ENDPCODE ENDSEND START把程序保存在d:/masm5文件夹下。
(2) 汇编windows环境下通过开始—〉运行——〉输入CMD回车(进入DOS系统)——〉输入D:回车——〉输入CD空格MASM5(进入D盘下MASM5然见的根目录)。
在光标处输入MASM 文件名,回车进行编译。
(例如文件名为则执行的操作为:d:\masm5>masm执行上述操作命令之后将在屏幕上显示如下信息:Microsoft(R) Macro Assembler VersionCopyright(C) Microsoft Corp 1981-1985, rights reservedObject filename[]:Source listing[]:Cross reference[]:50678 + 410090 Bytes symbol space free0 warning Errors0 Severe Errors在汇编过程中产生了三个文件,其默认的文件名显示在屏幕上,如果不需要做任何改变就直接按Enter键。
通过屏幕上的显示,可以了解到在本次汇编过程中没有发生错误和警告,因此可以继续进行链接操作。
(3) 链接在光标处输入LINK 文件名,回车进行链接。
执行上述命令后将在屏幕上显示如下信息:Microsoft(R) Overlay Linker VersionCopyright(C) Mirosoft Corp rights reservedRun File[]List File[]:Libraries[.LIB]:在链接过程中产生了两个文件,其默认的文件名显示在屏幕上,如果不需要做任何改变就直接按回车键。
对于库文件一栏,如果不需要使用库文件,可以直接按Enter键;如果需要使用库文件,则要求输入所使用的库文件名字。
(4) 运行在光标处输入文件名,回车运行可执行文件。
在屏幕上输入回车就可以看到“HELLO!”的字样了。
五、实验报告(1) 画出程序流程图;(2) 调试说明包括上机调试的情况、上机调试步骤、调试过程中所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
六、思考题(1) 汇编过程中 MASM ABC和 MASM 的结果是否一致。
(2) 链接过程中 LINK ABC和LINK 的结果是否一致。
实验二字符输入输出及字符串显示实验一、实验目的(1) 熟练掌握微机汇编语言源程序的编辑、汇编、链接和执行等过程。
(2) 深入理解DOS系统功能调用的过程。
(3) 学会用常用的DOS系统功能调用编写程序。
二、实验内容(1) 输入一个小写字母显示它对应的大写字母。
(2) 输入一个字符,若是R就返回DOS,否则在屏幕上显示该字符。
(3) 在屏幕上显示一个字符串:Welcome to microcomputer laboratory!三、实验要求(1) 实验前要作好充分准备,编辑好源程序,考虑清楚运行步骤。
(2) 本实验要求在PC机上进行。
四、编程提示(1) 程序核心提示关键是找出小写字母和大写字母之间的联系。
要显示一个字符,其实计算机处理的是它的ASCII码。
由ASCII码表可知26个小写字母a~z的ASCII码分别为61h~7Ah,26个大写字母A~Z的ASCII码分别为41h~5Ah,因此小写字母比对应的大写字母的ASCII码大20h,也就是说小写字母的ASCII码减少20h就可以得到对应的大写字母的ASCII码了。
还要排除一些特殊的情况:例如,输入的不是小写字母。
这就要在转化之前作一个判断,若不是小写字母的字符,则跳转的程序执行的开始处,重新接收键盘的输入。
(2) 程序选择分支判断①程序出现分支时,要注意程序的走向,注意两路分支是否可以合并。
②在每次输入字符时,考虑添加回车或换行符。
(3) 程序结束处理提示返回DOS状态可以用4CH号功能调用。
即:MOV AH,4CHINT 21H五、实验报告(1) 程序说明说明程序的功能、结构。
包括:程序名、功能、算法说明、主要符号,并对所用到的寄存器、功能调用号进行说明。
(2) 调试说明包括上机运行的情况、上机调试步骤、调试过程中所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
(3) 画出程序流程图。
(4) 写出程序和执行过程清单。
六、思考题如果给出Welcome to microcomputer laboratory!,要求写出相应的机器代码,怎样实现,与本次实验对应什么关系分析其具体过程并画出程序流程图。
实验六存储器读写实验一、实验目的(1) 掌握PC机外存扩展的方法。
(2) 熟悉6264芯片的接口方法。
(3) 掌握8086十六位数据存储的方法。
二、实验内容向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。
三、实验原理介绍本实验用到存储器电路。
四、实验步骤(1) 实验接线:本实验无需接线。
(2) 编写调试程序。
(3) 运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。
五、实验提示(1) 本实验中RAM区的起始地址为02000H,编程时段地址可设为0100H,则偏移地址为1000H。
(2) 如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。
(3) 6264、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用作数据存储器扩展。
本实验所进行的内存置数在程序中经常用到。
计算机系统运行中会频繁地进行内存与外设或者内存与内存之间的数据传输,所以本实验虽然简单但对理解系统程序的运行很关键,望学习和实验时认真对待。
六、程序流程图程序流程图如右图所示。
七、程序源代码清单code segment ;define data segmentassume cs:codeorg 0100hstart: mov ax,0100hmov ds,axmov es,axmov si,1000hmov cx,0100hmov al,0intram: mov [si],alinc siloop intram ;将1000h-1100h地址单元清零mov si,1000hmov cx,100hmov ax,55aahfil: mov [si],axinc siinc siloop fil ;将偶地址置为AAH,奇地址置为55Hnopjmp startcode ends ;end of code segmentend start ;end assembly八、思考题(1) 若编程时段地址设为500H,则偏移地址为多少那么程序中如何修改(2) 若向2000H~20FFH单元送入数据,连续4个单元送入的数据分别为AAH、55H、BBH、66H,如此往复循环,则程序该如何修改(方法不唯一)(3) 如果放入数据的个数是50H,则程序应如何修改注意:思考题中程序的修改都不是唯一的。
实验七简单I/O口扩展实验一、实验目的(1) 熟悉74LS273,74LS244的应用接口方法。
(2) 掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
二、实验内容逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。
三、实验原理介绍本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。
四、实验步骤(1) 实验接线:CS0连接CS244,CS1连接CS273,平推开关的输出K1~K8对应连接IN0~IN7,O0~O7对应连接LED1~LED8。
(2) 编辑程序,单步运行,调试程序(3) 调试通过后,全速运行程序,观看实验结果。
(4) 编写实验报告。
五、实验提示74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。
六、实验结果程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。
例如:K2置于L位置,则对应的LED2应该点亮。
七、程序框图(实验程序名: )八、程序源代码清单assume cs:codecode segment publicorg 100hstart: mov dx,04a0h ;74LS244地址in al,dx ;读输入开关量mov dx,04b0h ;74LS273地址out dx,al ;输出至LEDjmp startcode endsend start九、思考题(1) 有8个发光二极管,其阴极上加低电平则亮,用74LS273芯片作为I/O接口与8086CPU通信,要求这些二极管同时亮或灭,同时二极管亮或灭的时间分别为50ms和20ms。
试画出其硬件接口电路,并编写程序完成要求(时间控制可调用软件延时子程序)。
(2) 同上题,要求发光二极管由低位向高位依次循环显示,且每个二极管显示时间为1秒。
编写实现该功能的程序。