微机原理实验五字符及字符串的输入输出
微机原理基本输入输出接口
微机原理基本输入输出接口微机原理是指计算机系统的核心部分,它包括了计算机的硬件系统和软件系统。
基本输入输出接口(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,实现灯的亮灭。
微机原理第章输入和输出
7.3 DMA控制器
• 8237的工作周期 8237在设计时规定它有两种主要的工作周期(或工 作状态),即空闲周期和有效周期。每一个周期又是由 若干个时钟周期所组成的。
• 8237的工作方式
8237在DMA传送时有四种工作方式。 • 1.单字节传送方式 这种方式一次只传送一个字节。数据传送后字节计数 器减量,地址要相应修改(增量或减量取决于编程)。 HRQ变为无效,释放系统总线。若传送使字节数减为0, TC发生或者终结DMA传送,或重新初始化。
(1)清除高/低触发器
(2)主清除命令
11.8237的编程步骤 • (1)输出主清除命令。 • (2)写入基与现行地址寄存器。 • (3)写入基与现行字节数寄存器。 • (4)写入模式寄存器。 • (5)写入屏蔽寄存器。 • (6)写入命令寄存器。 (7)写入请求寄存器。若有软件请求,就写入指定通 道,可以开始DMA传送的过程。 若无软件请求,则在完成了(1)~(6)的编程后, 由通道的DREQ启动DMA传送过程。
7.1 概述
• 7.1.1 输入输出的寻址方式
CPU寻址外设可以有两种方式。 • 1.存储器对应输入输出方式 在这种方式中,把一个外设端口作为存储器的一 个单元来对待,故每一个外设端口占有存储器的一个 地址。从外部设备输入一个数据,作为一次存储器读 的操作;而向外部设备输出一个数据,则作为一次存 储器写的操作。
这种方式的优点是:
(1)CPU对外设的操作可使用全部的存储器操作 指令,故指令多,使用方便。例如可以对外设中的数 据(存于外设的寄存器中)进行算术和逻辑运算,进 行循环或移位等。
(2)内存和外设的地址分布图是同一个。 (3)不需要专门的输入输出指令以及区分是存储 器还是I/O操作的控制信号。
微机原理实验指导书
实验一数据传送实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用TurboDebugger调试工具来调试汇编语言程序。
实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
字符及字符串输入输出与顺序程序设计实验微机
一、实验预习
实验序号 3 实验题目 字符及字符串输入输出与顺 序程序设计实验 预习日期 2014/5/10
要求:1.实验目的;2.实验设备;3.实验内容及步骤;4.思考与练习
实验目的:1、学习和掌握字符及字符串的输入、输出方法。 2、掌握顺序程序的设计方法。 3、进一步掌握调试工具的使用方法。 实验设备:微型计算机 一台 实验预习要求:1、复习DOS功能调用中用于字符输入(功能号01H) 、字符输出(功能号为02H) 、字符串输(功 能号为0AH)以及字符串输出(功能号为09H)的调用方法。 2、复习BCD码运算调整指令AAA。 3、根据“实验内容及步骤 2”中给出的源程序框架,编写完整的源程序,以便实验时调试。 4、从“实验习题”中任选一道题目,编写源程序,以便上机调试。 实验内容及步骤: 从键盘输入两个1位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 ①.从键盘输入一个1位十进制数的方法。 通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下: MOV AH,01H INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中。
②.提示信息字符串的显示。 通过功能号为9的DOS功能调用实现字符串的显示,注意字符串的最后一个字符必需为‘$’。指令格式如下: MOV DX,OFFSET INFOR1 MOV AH,09H INT 21H ;INFOR1为在数据段中定义的要显示的字符串名。
③.非压缩型BCD码加法调整指令的使用。 设从键盘输入的数值已存放在寄存器AL,BL中,可用下列程序完成数据相加和调整操作: XOR ADD AAA AH,AH AL,BL ;执行该指令后,AH中为和的十位数,AL中为和的个位数
第
字符及字符串的输入输出实验报告-文少轩
字符及字符串的输入输出实验报告西安交通大学文少轩一、实验目的1.掌握简单的DOS系统功能调用;2.掌握在PC机上建立,汇编,链接,调试和运行8086汇编语言程序的全过程。
二、实验设备IBM-PC 微型计算机一台三、实验要求1. 复习DOS系统功能调用的1,2,9,10号功能;2. 认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立,汇编,连接,执行,调试的全过程。
四、实验内容及数据记录实验内容一:字符的输入和输出从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母。
例如输执行结果:*实验习题:如果要在程序中加入显示提示字符串“Please input a lowercase letter”和“The inverse letter is:”,应如何修改程序?程序代码:执行结果:实验内容二:字符串的输入和输出从键盘输入一个字符串(假定键盘缓冲区的名字为STR),将其传送给INFO变量后,再在屏幕上显示出来。
汇编、连接:执行结果:*实验习题:如果要在程序中加入显示提示字符串“Please input a string”和“The string you input is:”,应如何修改程序?程序代码:DSEG SEGMENTINTIP DB 'Please input a string',0DH,0AH,'$'汇编、连接:执行结果:五、实验小结1.DOS系统功能调用的10号功能对键盘缓冲区格式地要求:第一个字节为输入字符串的最大长度,第二个字节用来存放实际输入字符串的长度,从第三个字节开始存放实际输入的字符串的ASCII码;2.DOS系统功能中的1、2、9、10号功能的输入输出参数及存放的寄存器关系如下表:3.字符和字符串的输入输出的实现都需要调用相应功能号,并产生相应的中断,即先给AX赋值所需的功能号,然后产生21H中断,输入的单字符会存放在AL中,输出单字符前需要把字符ASCII码存放到DL中,输入输出字符串,需要先把字符缓冲区首址存放到DS:DS寄存器中。
微机原理实验五字符及字符串的输入输出
实验五字符及字符串的输入输出一、实验目的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 操作系统,显示器显示系统提示符。
微机原理中的关于输入输出指令
微机原理中的关于输入输出指令I/O指令是专门面向输入输出端口进行读写的命令,共有两条:IN和OUT.输入指令IN用于从I/O端口读数据到累加器AL(或AX)中,而输出指令OUT用于把累加器AL(或AX)的内容写到I/O端口。
即从CPU方面看,只有累加器AL(或AX)才能与I/O端口进行数据传送,所以两条指令也称为累加器专用传送指令。
8086系统可以连接多个外设端口,可以像存储器一样用不同的地址来区分它们。
在I/O指令中,允许用两种形式来表示端口地址,或称为两种寻址方式:◆直接寻址:指令中的I/O端口地址为8位。
此时允许寻址256个端口,端口地址范围为:0~FFH.◆寄存器间接寻址:端口地址为16位,由DX寄存器指定,可寻址64K个端口地址,范围为:0~FFFFH。
1)输入指令IN指令格式:IN acc,port ;直接寻址,port为8位立即数表示的端口或:IN acc,DX ;间接寻址,16位端口地址由DX给出指令从端口输入一个字节到AL或输入一个字到AX中例1 MOV DX,03B0H ;将16位端口地址送DXIN AL ,DX ;从地址为3B0H的端口输入;一个字节到ALIN AX,3FH ;从地址为3FH的端口输入一个字到AL2)输出指令OUT指令格式:OUT port, acc ;直接寻址,port为8位立即数表示的端口地址,或:OUT DX,acc ;间接寻址,16位端口地址由DX给出指令将AL(或AX)的内容输出到指定的端口例2 OUT 43H ,AL ;将AL的内容输出到地址为43H的端口OUT 44H,AX ;将AX的内容输出到地址为44H的端口MOV DX,33FH ;端口地址33FH送DXOUT DX,AL ;将AL的内容输出到地址为33FH的端口请注意,采用间接寻址的IN/OUT指令只能用DX寄存器作为间接寄存器。
第八讲 字符、字符串的输入与输出
1 第八讲 字符、字符串的输入与输出一:字符的输入与输出函数:1:字符输入函数getche ( ):它有两个变体getchar( )和getch( ),而第二个变体用得最多。
它们用于等待从键盘上输入一个‘字符’。
2:字符输出函数putchar(n): 其功能是用于输出单个‘字符’。
3:程序举例:<1>单个‘字符’的输入和输出:#include ”conio.h ” /*字符函数须此头文件*/ main(){char ch ; /*定义ch 为字符型变量*/ ch=getche() /*等待键入一个‘字符’*/ putchar(ch); /*输出键入的‘字符’*/ putchar(‘\n ’); /*注意用单引号加\n 换行*/ } 运行:输入a ,屏幕显示:aa注:使用该函数要用头文件。
运行结果中第一个a是键盘上输入系统回显的,第二个a 是putchar(ch) 函数输出的。
<2>多个‘字符’的输入和输出:#include<conio.h> /*字符函数须此头文件*/ main(){char a,b,c ; /*定义a,b,c 为字符变量*/ a=getch();b=getch();c=getch(); /*输入*/ putchar(a);putchar(b);putchar(c); /*输出*/ getch();} 运行:在键盘上输入boy ↙后显示:boy注:①最后一行的getch()函数在程序中的作用是显示boy 后,将停留到有一键按下,这有利于观察运 行结果,无须再按“Alt + F5”来查看运行果。
②用getch 函数编程,键盘输入系统无回显。
二:“字符串”的输入与输出函数:1:“字符串“的输入函数 gets (): 其功能是用于从键盘上输入“字符串”。
2:“字符串”的输出函数puts(): 其功能是用于输出“字符串”。
3:程序举例:<1>“字符串”的输入与输出:#include"string.h"/*字符数组用此头文件*/ main(){char p[20];/*定义一维数组p 为字符型*/clrscr();gets(p); /*在键盘上键入“字符串”*/ puts(p); /*输出数组中的“字符串”*/ puts("\n"); /*注意用双引号加\n 换行*/ puts("hello ");/*输出“hello ” 字符串*/} 运行:如输入This is a book.↙则显示: This is a book. (空一行) hello注:①在键盘上输入“字符串”后,必须用回车作为输入结束,在字符串后面用“\0”代替回车符。
寻址方式与基本指令与字符及字符串输入输出实验
一.实验目的及实验环境实验目的:1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。
2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。
3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法4、学习和掌握字符及字符串的输入输出方法。
5、掌握顺序程序的设计方法。
6、进一步掌握调试工具的使用方法。
实验环境:80x86系列微型计算机一台以及进行汇编语言程序设计所必需的编程工具(文本编辑器、ASM.EXE、LINK.EXE、DEBUG.EXE)二.实验内容1、读懂源程序;编辑、汇编、连接生成.ASM、.OBJ、.LST、.EXE文件;使用DEBUG单步执行文件,并回答以下问题;指出指令的错误原因,上机运行,观察汇编程序给出的出错信息,改正后再上机验证。
2、从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
三.方案设计(一)寻址方式与基本指令实验1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ 文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
(1)程序装入后,代码段寄存器CS的内容为___076B_____H,代码段第一条可执行指令MOV AX, DATA对应的机器代码为_____B86A07_____H,它是一个____3____字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是_____立即数寻址_____,其值为_____076A_____。
(2)执行完MOV DS, DATA指令后,数据段寄存器DS的内容为____076A____H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为____076A0____H、____076A1____H和____076A2____H。
- 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号指令和其功能。