微机原理实验五字符及字符串的输入输出
微机原理基本输入输出接口

微机原理基本输入输出接口微机原理是指计算机系统的核心部分,它包括了计算机的硬件系统和软件系统。
基本输入输出接口(Basic Input/Output System, BIOS)是计算机系统中一种重要的软件组件,它提供了计算机启动时的底层控制和管理功能,负责完成计算机硬件的初始化和自检等任务。
BIOS是存储在计算机主板上的一块ROM芯片中,它具有独立于操作系统的特点,可以提供计算机启动的基本功能。
在计算机启动时,BIOS会首先进行硬件自检,检测主要硬件设备的状态和配置情况,从而确保计算机系统的正常运行。
然后,BIOS会加载操作系统,并将控制权转交给操作系统,从而完成计算机的启动。
在计算机系统中,基本输入输出接口主要包括以下几个方面:1.键盘和显示器接口:计算机通过键盘接口接收用户的输入,通过显示器接口向用户展示计算机系统的状态和结果。
BIOS负责键盘和显示器的初始化和管理,确保键盘和显示器正常工作。
2.磁盘接口:计算机通过磁盘接口与硬盘、光盘、软盘等外部存储设备进行数据交换。
BIOS负责硬盘、光盘、软盘的初始化和管理,使它们能够被操作系统正确识别并使用。
3.串口和并口接口:计算机通过串口和并口接口与外部设备进行数据交换,如打印机、调制解调器等。
BIOS负责串口和并口的初始化和管理,确保它们能够正确地与计算机通信。
4.时钟和定时器接口:BIOS通过时钟和定时器接口提供计算机系统的日期、时间和时钟信号等。
这些信息在操作系统运行过程中起着重要的作用,如文件时间戳、进程调度等。
5.中断和DMA接口:计算机系统中有许多硬件设备需要及时响应,如键盘输入、网络数据传输等。
BIOS通过中断和DMA接口实现硬件设备与操作系统的交互,确保及时处理硬件设备的请求。
基本输入输出接口通过这些接口与计算机系统的其他部分进行交互,提供了计算机系统的基本输入和输出功能。
它是计算机启动和运行的基础,保证了计算机系统的正常工作。
同时,基本输入输出接口也是计算机硬件设备和操作系统之间的桥梁,实现了二者之间的交互和通信。
微机原理字符及字符串输入输出与顺序程序设计实验

2.2 字符及字符串输入输出与顺序程序设计实验2.2.1 实验目的1、学习和掌握字符及字符串的输入输出方法。
2、掌握顺序程序的设计方法。
3、进一步掌握调试工具的使用方法。
2.2.2 实验预习要求1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。
2、复习BCD码运算调整指令。
3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。
4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。
2.2.3实验内容从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
1、问题分析比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。
由于数字0 9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H 用于单个字符输出的DOS功能调用将它们显示出来。
综上所述,需要考虑以下问题。
(1)从键盘输入一个一位十进制数的方法通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:MOV AH, 01HINT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUB AL, 30H ;减去30H后得到键入数字所代表的数值(2)提示信息字符串的显示通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为’$’。
微机原理实验五-8255输入输出实验

微机原理实验五-8255输入输出实验一、实验要求:南昌大学实验报告利用8255可编程并行口芯片,实现输入/输出,实验中用8255PA口作输出,PB口作输入。
二、实验目的:(1)了解8255芯片结构及编程方法。
(2)了解8255输入/输出实验方法。
三、实验器材:(1)G2022实验平台1台(2)G6W仿真器1台(3)连线若干根(4)8255芯片1片(5)LAB8088CPU板1块四、实验电路:8255的/CS接译码器Y2(0A000H-0AFFFH),则命令字地址为0A003H,PA口地址为0A000H,PB口地址为0B001H,PC口地址为0B002H。
PA0-PA7(PA口)接L0-L7(LED发光二极管组),PB0-PB7(PB口)接K0-K7(K0-K7开关量发生器),再接上数据线和读/写信号,地址线只接A0,A1即可,还要接上RESET信号,以便8255A可靠复位。
特别强调:8255的第七脚应接GND(地),第二十六脚应接+5V。
五、实验说明:可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。
本实验采用的是方式0:PA,PC口输出,PB口输入。
方式字为82H。
六、实验步骤:(1)使用实验平台锁进插座,如图连线,因8255片选信号为0A000H,所以,A口为0A000H、口为0A001H、C口为0A002H、命令口为0A003H。
(2)硬件测试:把G2022+G6W连PC机,在WINDOWS调试环境下点击[窗口/数据窗口/MEMORY],以打开MEMORY数据窗口,在打开的MEMORY窗口中的0A003H地址(即8255的片选空间)上写入控制字82H,在0A000H (8255的A口)上打入55H,0AAH等数字,LED发光二极管组对应点亮。
若不是,则硬件有问题。
(3)编写程序、编译程序,用单步、断点、连续方式调试程序,排除软件错误。
运行程序,直至达到本实验的要求为止。
C语言字符串处理掌握字符串的输入输出和处理函数

C语言字符串处理掌握字符串的输入输出和处理函数C语言字符串处理:掌握字符串的输入输出和处理函数在C语言中,处理字符串是十分重要的。
字符串是一系列字符的集合,在程序中广泛应用于文本处理和数据操作。
掌握字符串的输入输出和处理函数对于编写高效的C语言程序至关重要。
本文将介绍C语言中字符串的输入输出和一些常用的字符串处理函数。
一、字符串的输入输出1. 字符串的输入在C语言中,我们可以使用scanf函数来读取字符串的输入。
需要注意的是,由于scanf遇到空格、制表符或换行符时会停止读取,因此无法直接读取带有空格的字符串。
为了读取完整的字符串,我们可以使用fgets函数。
```c#include <stdio.h>int main() {char str[100];printf("请输入一个字符串:");fgets(str, sizeof(str), stdin);printf("您输入的字符串是:%s\n", str);return 0;}```上述代码中,我们定义了一个大小为100的字符数组str,并使用fgets函数从标准输入读取字符串。
其中sizeof(str)用于指定最大读取的字符数。
2. 字符串的输出在C语言中,我们可以使用printf函数来输出字符串。
需要注意的是,如果字符串中包含格式控制符(如%),需要使用转义字符%来表示。
```c#include <stdio.h>int main() {char str[] = "Hello, World!";printf("字符串输出示例:\n");printf("%s\n", str);return 0;}```上述代码中,我们定义了一个包含字符串"Hello, World!"的字符数组str,并使用printf函数输出该字符串。
汇编语言-实验五 输入输出程序设计

实验五输入输出程序设计一、实验目的1) 掌握输入输出程序的编写方法。
2) 熟悉系统功能调用的方法。
3) 熟悉动画程序的编写方法。
二、实验内容1)在CRT上每隔一秒连续显示字符0-9。
编程提示为了使输出的字符之间有空格,在每一个循环中输出一个0-9的字符和一个空格。
为了输出0-9,置寄存器BL初值为0,每循环一次使其增量。
为了保证输出是十进制,增量后用DAA调整指令。
由于输出为一位十进制数,用AND 0FH 指令屏蔽高4位。
2)用系统功能调用将‘HELLO’由键盘输入,再从屏幕输出‘***HELLO***’。
3)编制在屏幕上画线的子程序,调用该子程序画一矩形。
4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。
5)创建一磁盘文件,保存从键盘输入的字符串。
6)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。
7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。
8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。
三、源程序EXAM5-1STACK SEGMENT STACKDB 1024 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:MOV BL,0LP:MOV DL,20HMOV AH, 2INT 21HMOV AL,BLADD AL, 0DAAAND AL,0FHMOV BL,ALPUSH BXOR AL,30HMOV DL,ALMOV AH, 2INT 21HMOV BX,3E8HLP2:MOV CX,176H ;延时1msLP1:PUSHFPOPFLOOP LP1DEC BXJNZ LP2POP BXINC BLJMP LPCODE ENDSEND START执行程序EXAM5-1·EXE,屏幕上依次循环显示一个数字一个空格:0 1 2 3 4 5 6 7 8 9 ……EXAM5-2STACK SEGMENT STACKDB 1024 DUP(0)STACK ENDSDA TA SEGMENTBUFF DB 6,7 DUP(?),‘$’DA TA ENDSINPUT MACRO BUFEMOV DX,OFFSET BUFEMOV AH,0AHINT 21HENDMPUTCHAR MACRO CHARMOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK START:MOV AX,DA TAMOV DS,AXINPUT BUFF ;读取字符串➝BUFFPUTCHAR 0DHPUTCHAR 0AH ;光标另起一行MOV CX,0003HNEXT:PUTCHAR 2AHLOOP NEXTMOV CL,BUFF+1SUB CH,CHMOV BX,OFFSET BUFF+2BEGIN:MOV AL,[BX]PUTCHAR ALINC BXLOOP BEGINMOV CX,0003HNEXT1:PUTCHAR 2AHLOOP NEXT1MOV AH,4CHINT 21HCODE ENDSEND START执行程序EXAM5-2·EXE,输入HELLO↙屏幕上显示结果:*** HELLO ***EXAM5-5NAME EXAM6SSTACK SEGMENT STACK ’stack’DB 1024 DUP(?)SSTACK ENDSDATA SEGMENTASKNAME DB 0DH,0AH,’Enter the’DB ’dest file name:$’ASKCONT DB 0DH,0AH,’Enter the string’DB ’as file content:’0dh,0ah,’$’ FILEBUF DB 62,63DUP(?)HAND_D DW?MSGMER DB 0DH,0AH,0AHDB ’Directory full’,0DH,0AH,’$’MSGWER DB 0DH,0AH,0AHDB ’Disk full’,0DH,0AH,’$’MSGSUC DB 0DH,0AH,0AH,DB ’Write file is Successful’DB 0DH,0AH,’$’DATA ENDSDISPLY MACRO TEXTMOV DX,OFFSET TEXTMOV AH,09HINT 21HENDMCRHAND MACRO PATH,ATTRMOV DX,OFFSET PATH ;文件名MOV CL,ATTR ;文件属性XOR CH,CHMOV AH,3CHINT 21HENDMWRHAND MACRO HAND,BUFF,BYTEMOV BX,HANDMOV DX,OFFSET BUFFADD DX,2MOV CL,BYTEXOR CH,CHMOV AH,40HINT 21HENDMCLHAND MACRO HANDMOV BX,HANDMOV AH,3EHINT 21HENDMCODE SEGMENTPROG PROC FARASSUME CS:CODE,DS:DATA,SS:SSTACKPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXDISPLY ASKNAME ;提示输入文件名MOV DX,OFFSET FILEBUFMOV AH,0AHINT 21HMOV DI,OFFSET FILEBUF[2]MOV BL,FILEBUF[1]XOR BH,BHMOV BYTE PTR[BX][DI],00HCRHAND FILEBUF[2],0 ;创建并打开新文件JC CRTERRMOV HAND_D,AX ;存文件句柄DISPLY ASKCONT ;提示键入文件内容MOV DX,OFFSET FILEBUFMOV AH,0AHINT 21HWRHAND HAND_D,FILEBUF,FILEBUF[1]JC WRITERRCLHAND HAND_DDISPLY MSGSUCJMP EXIT CRTERR:DISPLY MSGMERJMP EXIT WRITERR:DISPLY MSGWER EXIT:RETPROG ENDPCODE ENDSEND PROG。
微机原理与接口技术输入输出实验

实验一:输入输出实验实验环境PC机+Win 2010+emu8086 实验日期2016.6.3 一.实验内容1.熟悉emu8086仿真系统,清楚调试环境,能熟练的查看8086仿真系统的寄存器、内存、堆栈等相关内容。
2.设计并单步调试实现一位十进制数的加法运算。
例如:屏幕显示效果为3+2=5,其中,加数和被加数为键盘输入,其他为屏幕自动输出。
3.在实现了一位十进制数加法运算的基础上,尝试实现两位十进制加法运算、一位十进制数的四则运算以及十进制多位数运算等扩展要求。
二.理论分析或算法分析1、Emu8086的使用(1)打开桌面上的云端软件,选择微机原理分类,点击Emu8086的图标,,选择【新建】。
(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面在源代码编辑器的空白区域,编写如下一段小程序:代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。
本例将源代码保存为.asm。
:(3)如果源程序无错误,则编译通过单击【单步运行】可以单步调试,程序将每执行一条指令便产生一次中断(建议使用)。
单击【后退一步】可以返回到上一条指令(这个功能也是一般调试器没有的)。
单击【运行】,程序将从第一句直接运行到最后一句。
2、设计并单步调试实现一位十进制数的加法运算。
(1)选择新建一个.COM类型的文件。
(2)在编辑界面中,键入代码。
(3)点击工具栏的【模拟】按钮,进入调试窗口,单步调试并观察寄存器的变化情况。
3、进一步完善上述程序,实现一位十进制数的加法运算。
4、在实现了一位十进制数加法运算的基础上,选择完成如下题目:两位十进制加法运算、一位十进制数的四则运算、十进制多位数运算等。
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)一位加法:org 100hmov ah, 1int 21hmov bl, al mov ah, 2 mov dl, '+' int 21hmov ah, 1int 21hand bl, 0fh and ax, 0fh add al, bl aaaor ax, 3030h mov bx, ax mov ah, 2 mov dl, '=' int 21h cmp bh, 30hje j1mov ah, 2 mov dl, bhint 21hj1:mov ah, 2 mov dl, blint 21hret 多位加法:org 100hmov ah, 1int 21hmov bh, al int 21hmov bl, al mov ah, 2mov dl, '+'int 21hmov ah, 1int 21hmov ch, al int 21hmov cl, aland bx, 0f0fh and cx, 0f0fh mov ax, cxadd ax, bxaaaor ax, 3030h mov bx, ax mov ah, 2mov dl, '='int 21h cmp bh, 30hje j1mov ah, 2mov dl, bhint 21hj1:mov ah, 2mov dl, blint 21hret一位减、乘、除:mov ah, 1int 21hand al, 0fhmov bl, al mov ah, 1int 21hmov dl, alint 21hand al, 0fhxor ah, ahcmp dl, '+'jne jp1add al, blaaajmp short jp4jp1:cmp dl, '-'jne jp2xchg al, blsub al, blaasjmp short jp4jp2:cmp dl, '*'jne jp3mul blaamjmp short jp4jp3:xchg al, bldiv blaam jp4:mov bx, axmov ah, 2mov dl, '='int 21hor bx, 3030h cmp bh, '1'jc j1mov dl, bhint 21hj1:mov dl, blint 21h四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)一位数加法:多位数加法:一位数减、乘、除法五.结论通过这次实验,我对EMU8086实验模拟环境有相应的了解,熟悉了基本的EMU8086的使用方法,同时也对mov这个指令有了深入的理解,并且知道了各个存储器里面的值得存储过程,为以后的的学习打下了坚实的基础。
微机原理_输入输出
中断传送方式 直接存储器存储方式
– DMA(Direct Memory Access) DMA(
数据不经过CPU, 数据不经过CPU,在存储器和外设间传送方式
(1)无条件传送 ①输入的例子:
D7~D0 A15~A1 地址 译码 器 0160H CS
三态 缓冲 器 OE
I/O 装置
A0 IOR
MOV DX, 160H IN AL, DX
解决 两个 基本 问题
输入输出接口的寻址方式
端口寻址电路与内部存储器寻址电路基本相同。 端口寻址电路与内部存储器寻址电路基本相同。 但地址线只有16根 只能访问64K个端口。 但地址线只有16根,只能访问64K个端口。 为高电平外, 寻址时序除引脚 IO/M 为高电平外,其它与存储器 的访问时序完全相同。 的访问时序完全相同。 为了配合CPU总线 每个端口包含8bit信息 总线, 信息。 为了配合CPU总线,每个端口包含8bit信息。 寻址指令只有两条: (输入 输入) OUT(输出 输出) 寻址指令只有两条:IN (输入) 、OUT(输出)。 寻址方式两种: 寻址方式两种: 直接给端口地址(必须位于[00H FFH]区间 区间) 直接给端口地址(必须位于[00H-FFH]区间) DX作端口指针 可位于[0000H FFFFH]区间 作端口指针( 区间) 用DX作端口指针(可位于[0000H-FFFFH]区间)
特 点:把一个外设端口作为存储器的一个单元对待, 把一个外设端口作为存储器的一个单元对待, 外设与存储器共用地址单元。 外设与存储器共用地址单元。 数据传送: 数据传送:使用存储器的操作指令
标准的I/O寻址方式 标准的 寻址方式
特 点:地址空间独立 数据传送:专门的输入/输出指令 数据传送:专门的输入 输出指令 IN OUT 寻址方式: 端口地址8位 范围[0, 寻址方式:直接寻址 端口地址 位 范围 ,255] 端口地址16位 范围[0, 间接寻址 端口地址 位 范围 ,0FFFFH]
字符串的输入输出
字符串的输⼊输出本⽂部分内容参考了C Primer Plus(Fifth Edition)C语⾔字符串表⽰ 字符串是C语⾔中最常⽤也是最重要的数据类型,但是C语⾔没有专门提供这种类型。
因为字符串由字符组成,所以声明字符串,我们⽤字符数组。
字符数组是字符串的变量表⽰⽅法。
纯字符数组和字符串的区别和联系就是:字符串是⼀个以'\0'结尾的字符数组。
因此,我们声明⼀个字符数组char ch[32]实际上它最多只能存储31个可显⽰字符,最后⼀个字符是'\0',它是字符串结尾的标志。
字符串还有⼀种表⽰⽅法,那就是字符串常量(字符串字⾯量)。
例如printf("%s","King and Queen");这个表达式语句中"King and Queen"就是字符串常量。
实际上,它也是⼀个元素为字符常量的数组,这个数组内容为(char []){'K','i','n','g',' ','a','n','d',' ','Q','u','e','e','n','\0'};千万注意别忘了'\0'。
因为字符串常量如"Anytime"可以表⽰这个字符串(准确说是元素为字符常量的数组)的⾸地址。
因此,我们可以⽤指针来操作字符串。
我们可以这样声名:char * chptr = "Anytime";但不能这样:char * chptr;*chptr = "Anytime";因为*chptr表⽰chptr所指向的地址上⾯的内容,如果这个指针未初始化,那么这就是个很危险的操作,指针有可能乱指向内存空间,如果指向的是系统⽂件,它就会修改系统⽂件。
微机原理-微机原理实验2
微机原理实验2 字符及字符串的输入与输出班级学号姓名实验时间:年月日实验成绩:1.实验目的利用汇编及连接程序,实现字符及字符串的输入与输出,要求运用系统功能调用INT21H。
完成创建源程序文件,汇编,连接,运行,实验结果的查看。
完成下面两个任务:a.在屏幕上显示‘hello,world!’b.从键盘上输入一个英文字符,然后显示其ascii二进制代码。
2.实验原理a.输入单字符这是1号系统功能调用,使用格式如下所示:它没有入口参数,执行1号系统功能调用时,系统等待键盘输入,待程序员按下任何一键,系统先检查是否Ctrl-Break键,如果是则退出,否则将键入字符的ASCII码置入AL寄存器中,并在屏幕上显示该字符b.输入字符串这是0AH号系统功能调用,其功能是将键盘输入的字符串写入到内存缓冲区中,因此必须事先在内存储器中定义一个缓冲区。
其第1字节给定该缓冲区中能存放的字节个数,第2字节留给系统填写实际键入的字符个数,从第3个字节开始用来存放键入的字符串,最后键入回车键表示字符串结束。
如果实际键入的字符数不足填满缓冲区时,则其余字节填“0”;如果实际键入的字符数超过缓冲区的容量,则超出的字符将被丢失,而且响铃,表示向程序员发出警告。
0AH号系统功能调用的使用格式如下所示:……BUF DB 20DB ? 定义缓冲区DB 20 DUP(?)……MOV DX,OFFSET BUFMOV AH,0AH 0AH号系统功能调用INT 21H以上程序中,由变量定义语句定义了一个可存放20个字节的缓冲区,执行到INT21H 指令时,系统等待用户键入字符串。
程序员每键入一个字符,其相应的ASCII码将被写入缓冲区中,待程序员最后键入回车键时,由系统输出实际键入的字符数,并将其写入缓冲区的第2字节中。
c.单字符这是2号系统功能调用,使用格式如下所示:MOV DL,‘A’MOV AH,2INT 21H执行2号系统功能调用时,将置入DL寄存器中的字符从屏幕上显示输出(或打印机打印输出)。
微机原理简单输入输出实验报告
东南大学《微机实验及课程设计》实验报告实验四(1)简单输入输出一. 实验目的与内容(一)实验目的1)进一步掌握TPC实验装置的基本原理和组成结构;2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用。
(二)实验内容及要求1、输出接口输出,根据8个发光二极管发光的情况验证编程从键盘输入一个字符或数字,将其ASCII码通过正确性。
(输出端口实验必做)2、用逻辑电平开关预置某个字母的ASCII码,编程输入这个ASCII码,并将其对应字母在屏幕上显示出来。
(输入端口实验必做)3、利用基本实验(1)中的输出锁存电路,设计L0~L7为流水灯,流水间隔时间由软件产生。
(输出端口实验)4、利用基本实验(2)中的输入电路,监测逻辑电平开关K0~K7的变换,当开关状态为全开时,在屏幕上显示提示信息并结束程序。
(输入端口实验)要求:1、输入输出端口应该可以响应外设的连续变化。
2、输出按ESC键退出;输入按任意键退出。
3、内容3、4比做一题,选做一题二. 实验基本原理(一)基本原理简单并行输出实验:八D触发器74LS273的八个输入端接数据总线D0~D7,从键盘输入一个字符或数字,通过2A8H~输出接口输出该字符或者数字代表的ASCII码,再通过8个发光二极管发光显示二进制数码,从而验证编程以及电路的正确性。
简单并行输入实验:八缓冲器74LS244的八个输出端接数据总线D0~D7,8个输入端分别接逻辑电平开关K0~K7,在逻辑电平开关上预置任意字符的ASCII码,编程将此ASCII码通过2A0H~输入,ASCII码对应字符显示在屏幕上,从而验证编程及电路的正确性。
(二)实验接线图图 3.4-1 简单并行输出接口图 3.4-1 简单并行输入接口(三)主程序流程图输出参考流程图输入参考流程图三. 方案实现与测试(或调试)(一)实验代码必做1:代码与参考程序相同,主要是替换主机的tpc卡的i/o地址ioport equ 0d400h-0280hls273 equ ioport+2a8h必做2:代码与教材参考程序相同,同样需要替换主机的tpc卡的i/o地址 ioport equ 0d400h-0280hls244 equ ioport+2a0h必做3(选择输出实验)代码如下:ioport equ 0b800h-0280hls273 equ ioport+2a8hstacks segment stackdb 100 dup (?)stacks endscode segmentassume cs:code,ss:stacksmain proc farstart:mov ax,stacksmov ss,axmov ah,2 ;回车符mov dl,0dhint 21hmov ah,1 ;等待键盘输入int 21hjudge:cmp al,27 ;判断是否为ESC键je exit ;若是则退出cmp al,31hje X1X2:mov cx,8int 21hjnz judgeje X2 ;若无,则转X2X1:mov cx,8mov al,01hmov dx,ls273XX1:out dx,alcall delayrol al,1loop XX2mov ah,06 ;是否有键按下mov dl,0ffhint 21hjnz judgeje X1 ;若无,则转X1 exit: mov ah,4ch ;返回DOSint 21hmain endpdelay proc near ;延时子程序mov al,01hmov dx,ls273XX2:out dx,alcall delayrol al,1loop XX2mov ah,06 ;是否有键按下mov dl,0ffhmov bx,3000 zzz: mov cx,0 zz: loop zzdec bxjne zzzretdelay endp code endsend start(二)实验调试结果首先,实验运行之前应该检测硬件是否正常,在正常的情况下,运行实验代码,检测试验结果,运行结果如下:实验1:从键盘输入不同的字母,灯可以连续响应变化,按照字母的ASCII,实现灯的亮灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五字符及字符串的输入输出
一、实验目的
1. 学会编写简单的字符、字符串输入输出程序。
2. 掌握几种常用的DOS 系统功能调用。
二、实验环境
1. 硬件:PC 微机
2. 软件:Masm for Windows 汇编集成开发环境
三、实验讲义
1. 系统功能调用是MS-DOS 为程序员编写汇编语言源程序提供的一组子程序,包括设备管理、文件管理和目录管理等。
它规定使用软中断指令INT 21H 作为进入各功能子程序的总入口,再为每个功能调用规定一个功能号,引用功能号即可进入相应的子程序入口。
使用方法:
(1)传送入口参数到指定的寄存器中,有的子程序不需要入口参数;
(2)把要调用功能的功能号送入AH 寄存器中;
(3)用INT 21H 指令转入子程序入口;
(4)相应的子程序运行结束后,可以按照规定取得出口参数,一般给在寄存器中。
常用系统功能调用的功能号有 1,10(0AH),2,9,4CH 五种:
(1)键盘输入单字符——1 号系统功能调用格式: MOV AH,1 INT 21H 功能:系统等待键盘输入,将键入字符的ASCII 码送入AL 寄存器中,并通过显示器显示该字符。
(2)键盘输入字符串——0A 号系统功能调用格式: LEA DX,缓冲区首地址MOV AH,0AH INT 21H
功能:将键盘输入的字符串写入内存单元中。
(3)输出单字符——2 号系统功能调用格式: MOV DL,’单字符’/ASCII 码MOV AH,2 INT 21H
功能:将单个字符通过屏幕显示出来。
将要显示的字符或者其ASCII 码先存入寄存器DL 中,再调用2 号系统功能调用。
(4)输出字符串——9 号系统功能调用格式: LEA DX,字符串首地址 MOV AH,09H INT 21H
功能:将指定的内存缓冲区中的字符串从显示器显示输出,注意字符串以字符’$’作为结束标志。
(5)返回操作系统——4CH 号系统功能调用格式:MOV AH,4CH INT 21H 功能:在用户程序结束处插入此调用,则返回到DOS 操作系统,显示器显示系统提示符。
四、实验内容
1. 从键盘输入一个大写字母,屏幕上输出其相应的小写字母。
(大写字母 A-Z 的ASCII 为41H-5AH;小写字母a-z 的ASCII 码为61H-7AH)
运行结果:
2. 在BUF 缓冲区中输入一段字符串,并将该字符串显示在屏幕上。
(回车键ASCII 码为 0DH,空格键 ASCII 码为 0AH,’$’字符 ASCII 码为 24H)
运行结果如下:
五,实验总结
本次实验学习了系统调用功能1,10,2,9,4ch号指令和其功能。