考题21九、实验结果和心得体会21
2
f实验一:熟悉实验环境及IO的使用
一、实验目的
1通过实验了解和熟悉实验台的结构、功能及使用方法。2通过实验掌握直接使用Debug的I、O命令来读写IO端口。3学会Debug的使用及编写汇编程序。
二、实验内容及要求
1学习使用Debug命令,并用I、O命令直接对端口进行读写操作。2用汇编语言编写跑马灯程序。(使用EDIT编辑工具)实现功能。A通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。B通过输出端口控制灯的工作状态(低电平灯亮)。注意:电源打开时不得插拔电缆及各种器件。连接电路时一定要在断电的情况下连接,否则可能会烧坏整个实验系统。
三、实验步骤
这里仅简要叙述利用EDIT工具编写汇编写跑马灯程序的步骤。编写:CEDIT文件名asm编译:CMASM文件名asm连接:CLINK文件名obj运行:C文件名exe或用Debug进行调试。
3
f四、程序流程图
图141程序流程图
五、源代码
CODESEGMENTASSUMECSCODESTARTMOVAH0FEHINALDX将初始灯设为右起第1灯亮将IO端口地址设为EEE0从端口读入数据,提取拨码开关右起第3位状态
4
LOOP0MOVDX0EEE0H
fANDAL20HCMPAL20HJNZSTOPINALDXANDAL40HCMPAL40HJNZFANROLAH1STOPFANDISPJMPDISPRORAH1MOVALAHOUTDXALMOVCX8000HMOVBX8000HLOOP1DECBXJNZLOOP1MOVBH80HINALDXANDAL10HCMPAL10HJNZSMOVBH10HSLOOPLOOP1INALDX提取拨码开关右起第1位状态若为‘0’,则继续显示,否则结束程序ANDAL80HCMPAL80HJNZLOOP0MOVAH4CHINT21HCODEENDSENDSTART外循环,CX减少到0提取拨码开关右起第4位状态若为‘1’,则设置内循环次数为10H次内循环,BX减少到0重设内循环次数80H次输出到端口,亮灯外循环次数内循环次数若状态为‘0’,则右移亮灯位置左移亮灯位置若状态为‘0’,则保持位置不变,暂停提取拨码开关右起第2位状态
六、思考题
通过实验说明用debug中的a命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。
5
f答:主要是出于数据辨认的角度。凡是十六进制数据都是要加H的,而地址则不用。这是由于编译时所能识别的数据有很多种,为了保证编译正常进行,必须要告诉编译器数据的类型。地址只有默认的16进制形式,不需指定类型就能完成正确的编译,所以无须加H。而在DEBUG环境下,它的默认数据格式就r