微机原理与技术接口 实验一 输入输出实验

本文介绍了在emu8086环境下进行输入输出实验,包括熟悉仿真系统,实现控制台的输入输出,以及设计一位十进制数的加法运算。通过调用DOS功能调用,利用汇编语言进行ASCII码与运算转换。实验结果讨论了输入输出数据和计算用数据的处理方式,以及单字符与串输入输出的区别。
摘要由CSDN通过智能技术生成

🌴 2022.4.27 早十 实验一

实验一 输入输出实验

前言

🎬本文章是 【微机原理技术接口】 专栏的文章,主要是实验内容
🔗微机原理技术接口专栏 传送门
💻提示:本文的环境是emu8086仿真系统。

1.1 实验要求

熟悉emu8086仿真系统,实现控制台输入输出,设计并单步调试实现一位十进制数的加法运算(屏幕效果为3+2=5,红色为输入其他为自动输出)

1.2 理论分析

调用DOS中AH=1输入字符,存入AL,返回值是ASCII码,所以要借用与运算将高位清零,例如字符3的ASCII码为33H,和FH与运算得到3H

调用DOS中AH=2输出字符,重点注意DL=要输出的字符,AL=DL。这会修改第一次在控制台输入的被加数,所以暂存在DH中

加数2即32H没有做与运算,因为如果这里做了与运算,计算完之后,在最后输出时输出的是05H对应的字符♣,还需要再和FH与运算一次才是35H即5

1.3 汇编语言

💻提示:所有实验源码已在

实验内容: 1. 请把下面程序的代码补全,并调试该程序(请手工输入代码,不要复制): 程序功能:P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 //---P1口输入、输出实验--- //-----头文件引用----- # /*提供 51单片机的 特殊功能寄存器(SFR) 和 其位地址 的符号定义*/ # /*通过定义宏,使用户可直接访问MCS51单片机的 不同存储区 */ #include<intrins.h> /*声明 C51的内部函数。使用方法与C语言的标准库函数一样,在c语言的头文件stdio.h中,仅仅声明了标准库函数,没有给出定义*/ /*声明的内部函数 包括_crol_(status,1)函数:将无符号字符status,左移1位 */ //-----宏声明----- #define uchar unsigned char //-----延时子程序----- void delay() { unsigned int k,j; for(k=0;k<200;k++) { for(j=0;j<500;j++); } } //-----主程序----- void main() { uchar status=0xFE; while(1) { P1= ; //写 P1口 status=_crol_(status,1);//循环左移 ; //延时 } } 2. 请把下面程序的代码补全,并调试该程序(请手工输入代码,不要复制): 程序功能:P1口做输入口,接八个扭子开关,以实验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 //---P1口输入、输出实验--- //-----头文件引用----- # /*提供 51单片机的 特殊功能寄存器(SFR) 和 其位地址 的符号定义*/ # /*通过定义宏,使用户可直接访问MCS51单片机的 不同存储区 */ //-----宏声明----- #define OUTPUT XBYTE[0x8300] // 并行输出口地址 //-----主程序----- void main() { P1= ; //因P1口是准双向口,所以把P1口作为,输入口时,应先置高电平. //单片机中的数据传送,在C语言中,都是以赋值语句的形式完成,∴此处依照C语言的习惯。 while(1) { OUTPUT= ; //把读入的数据输出 } }
微机原理汇编语言-实验报告(中北大学大数据学院)(前4个实验都可以直接运行,后面的几个需要用到proteus,这个要自己根据自己的情况搞,咱就不能保证在你电脑上能不能运行了) 实验一 简单程序设计 1. 编制一个简单的运算程序,并且调试完成。 2. 编制一个计算x=a2+b2 3. 验证上述结果的正确 实验二 循环、分支程序设计 1. 编制一个统计数组中正负数个数及均值的程序,并且调试完成得到正确的结果。 2. 设计计算Y=1+2+3+....,直到累加和刚好大于10000的程序并且调试完成。 3. 对给定数组中的所有元素,按从大到小的顺序排序,并且加以验证。 实验三 系统功能调用实验 1.编制一个具有屏幕提示和键盘输入的程序,键盘输入一个人名,在屏幕上显示“Hello 人名!”; 2.通过键盘输入一串包含大小写字母和数字的字符串,统计其中大写、小写字母和数字字符的个数,并将结果显示在屏幕上。 实验四 8255并行接口实验 1.将8255一个端口接8个发光二极管,用不同工作方式控制其逐次点亮发光二极管。 2.将8255另一个端口接开关,用不同工作方式,编程将开关信息在发光二极管上显示出来。 3.验证上述操作的正确性,对实验结果进行解释 实验五 键盘、LED实验 1.在实验箱上,连接小键盘和LED显示器。 2.编程将键盘输入的数字,显示在显示器上,在按键时,原来显示的数字左移一位,新按的键值显示在最右端。 3.考虑两个键组合时的输入方法 4.对实验结果进行说明 实验六 中断实验 1.连接实验箱上的数码管,通过消抖开关作为中断源。 2.编写程序,完成在中断服务程序中记录中断次数,在主程序中显示按键次数。 3.将消抖开关换成一般开关,用同样的程序,再测试,仔细观察,发现了什么,为什么? 实验七 定时/计数器实验 1.使用计数器对消抖开关的按动次数进行计数,显示当前的计数值。 2.对实验箱中系统时钟进行计数,改变计数初值(两个初值要相差很大),观察有什么不同。 3.8253的初值用0和1,观察结果,并加以分析。 4.分析实验结果,并对实验结果进行说明。 实验八 综合实验 1.将实验箱设计成一个电子表,该表能分时(或按键切换)显示年月日、时分秒; 2.设置按键,通过按键可以修正日期和时间,在修正日期、时间时,电子表仍然可以继续工作。 3.AD实验,用显示器显示当前AD的输入电压值,要求精确到小数点后2位数(选做)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值