您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页微机原理实验

微机原理实验

来源:爱go旅游网


实验1-3 汇编语言实验

一、实验目的

熟悉汇编语言语法 熟悉8086常用指令

掌握BIOS中断调用及DOS功能调用

二、实验内容

1、编写一个汇编语言程序,要求从键盘输入一个小写字母,将其转化成大写字母并在屏幕上显示出来。

2、编写一个汇编语言程序,将字符串“Assembly Language Programming”全部转化为大写字母,存放到原来所在单元。

3、从键盘接收一串字符,并另起一行逆序显示该字符串。

三、实验步骤

1. 题目1的完整汇编语言程序如下,在实验环境中保存文件进行编译连接后,在DOS中运行文件,可实现将输入字母转换成小写输出。

DATA SEGMENT ;定义数据段 BUF DB 0DH,0AH,'PLEASE INPUT A CHAR:$' DATA ENDS CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK ;段寄存器指派伪指令 BEGIN:

MOV AX,DATA

MOV DS,AX ;初始化DS LEA DX,BUF ;偏移地址送寄存器 MOV AH,9

INT 21H ;9号调用显示字符串PLEASE INPUT A CHAR: MOV AH,1 ;1号调用,从键盘接收一个字符

INT 21H

CMP AL,61H ;若比“a”小转PEND处执行 JB PEND

CMP AL,7AH ;若比“z”大转PEND JA PEND

SUB AL,20H ;若在“a”和“z”之间,则减去20变为大写字母 MOV DL,AL ;转换后的字符存入DL寄存器 MOV AH,2 ;2号功能调用显示一个字符 INT 21H PEND:

MOV AH,4CH ;程序结束,返回DOS

INT 21H CODE ENDS END BEGIN

2. 题目2的完整汇编语言程序如下,运行可执行文件后将字符串“Assembly Language Programming”转换成大写“ASSEMBLY LANGUAGE PROGRAMMING”并显示。

DATA SEGMENT ;定义数据段 BUF DB 0DH,0AH,'Assembly Language Programming$' N DB $-BUF ;字符串长度

DATA ENDS

CODE SEGMENT ;定义代码段

ASSUME DS:DATA,CS:CODE ;段寄存器指派伪指令 BEGIN:

MOV AX,DATA

MOV DS,AX ;数据初始化 LEA DX,BUF

MOV AH,9 ;9号调用显示字符串Assembly language Programming INT 21H

MOV CX,N ;设置循环计数值 MOV SI,DX L: MOV AL,[SI]

CMP AL,61H ;若比“a”小转NEXT JB NEXT

CMP AL,7AH ;若比“z”大转NEXT JA NEXT

SUB AL,20H ;若在“a”和“z”之间,则减去20变为大写字母 MOV [SI],AL NEXT:INC SI

LOOP L ;循环 DISPLAY:

LEA DX,BUF

MOV AH,9 ;9号调用显示字符串 INT 21H

EXIT:MOV AH,4CH ;程序结束,返回DOS INT 21H CODE ENDS END BEGIN

3. 题目2的完整汇编语言程序如下,DOC中运行文件,从键盘输入任意一字符串,并回车键结束输入,在下一行便可逆序显示所输入的字符串。

DATA SEGMENT

STR1 DB 0DH,0AH, 'PLEASE INPUT A STRING:$' BUF DB 512 DUP(?) ;定义可输入的字符个数 CRLF DB 0DH,0AH,24H ;回车换行符 DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

LEA DX,STR1 ;偏移地址送到寄存器 MOV AH,9 ;9号调用显示字符串 INT 21H

MOV SI,OFFSET BUF ;指针指向待显示字符串尾部 AGAIN:

MOV AH,01 ;输入字符

INT 21H

CMP AL,0DH ;是回车吗 JE DISP ;是,转显示 DEC SI ;指针减1 MOV [SI],AL ;存入输入的字符 JMP AGAIN ;继续输入 DISP:

MOV AH,09 ;显示

MOV DX,OFFSET CRLF ;回车换行 INT 21H

MOV DX,SI ;定位待显示字符串首地址 MOV AH,09 INT 21H

MOV AH,4CH ;程序结束,DOS返回 INT 21H CODE ENDS END START

四、程序框图

实验内容中的1、2、3题程序框图见如下图1-1、1-2和1-3。

开始开始数据初始化数据初始化INT 21H的9号功能显示提示字符串INT 21H的9号功能显示提示字符串SI指向的字符INT 21H的1号功能从键盘接收一个字符是否是小写字母是否是小写字母NN小写字母ASCII码值转化为大写字母ASCII码值存入缓冲区SISI加1指向下一存储单元Y小写字母ASCII码值转化为大写字母ASCII码值存入寄存器NINT 21H的2号功能显示转化后的字母Y循环计数值N为零Y显示转换后的字符内容结束

结束

图 1-1 图 1-2

开始数据初始化INT 21H的9号功能显示提示字符串输入字符是否是回车YSI指针减1存入输入字符显示转换后的字符内容结束

图 1-3

五、实验总结

DOS调用,运行程序文件,得到结果图分别如下所示:

图 1-4 图 1-5

图 1-6

通过实验,我熟悉了汇编语言程序的基本结构,掌握了教程中讲解的跳转类指令以及循环指令等,对DOS功能的调用更加熟悉。英文字母的编码是按ASSIC码表的顺序编码的,大写“A”到“Z”和小写“a”到“z”之间的转换,其ASSIC码值正好相差20H。

实验四 8259A中断实验

一、实验要求

掌握用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。

二、实验目的

了解8088/86与8259之间的连接方法。 学习8088/86对8259的控制方法。

三、预备知识

8259A是Intel公司专为控制优先级中断而设计的NMOS芯片。它集中断源优先级排队、中断源识别、中断向量提供和中断屏蔽等功能电路于一体,因而中断系统无需附任何电路,只需对8259A进行编程,就可管理8级优先中断,且中断请求方式和优先级模式等中断结构可通过编程设定或变更,中断入口地址也可由用户任意指定。

四、实验原理说明及连线

1、本实验主要用到的模块:中断模块、单次脉冲源模块等;

2、IR6接单次脉冲的/Q端。

D0D1D2D3D4D5D6D7INTRINTA111098761726D0D1D2D3D4D5D6D7INTINTACSRDWRA0U028259IR0IR1IR2IR3IR4IR5IR6IR71819202122232425IRQ0IRQ1IRQ2IRQ3IRQ4IR5J06IR6J07IR7J08SP/EN16R025KVCC20H1IIOR3IIOW2A027CAS0CAS1CAS2121315

图 4-1

五、实验内容

用单脉冲发生器的输出脉冲作为中断源,每按一次按键产生一次中断申请,中断服务程序将在实验箱的显示屏显示一个字符“R”。

六、程序框图

主程序框图见图4-2,中断程序框图见图4-3。

程序开始 开始 关中断 设置中断服务程序地址 现场保护 显示字符R

中断允许

现场恢复 开中断 中断返回 图 4-2 图 4-3 等待中断 七、实验步骤

1、确认连接好线路; 2、编写程序

3、装载并运行程序(脱机时调用ZY2TJ.EXE,联机时调用ZY2.EXE)。

汇编语言程序如下:

DATA SEGMENT ;数据段的定义 INT_SEG DW ? INT_OFF DW ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:CLI ;关中断

MOV AH,35H ;读原中断服务程序的入口地址 MOV AL,0EH INT 21H

MOV INT_OFF,BX ;保存原中断服务程序的入口偏移地址 MOV INT_SEG,ES MOV AX,CS ADD AX,10H

MOV DS,AX ;使数据和代码处于同一段 MOV DX,OFFSET UINTR ;取中断服务程序地址 MOV AH,25H ;设置中断向量 MOV AL,0EH ;送中断类型码 INT 21H

IN AL,21H ;读8259A中断屏蔽寄存器 AND AL,0BFH MOV DX,21H OUT DX,AL STI

MM:JMP MM

UINTR:CLI ;中断服务程序 MOV AL,'R' MOV DX,88H OUT DX,AL

MOV AL,20H ;向8259A发出EOI命令,结束中断 OUT 20H,AL IRET CODE ENDS END START

八、实验总结

8259A控制器芯片可实现对中断的控制,对8259A进行初始化编程后即可处理中断请求,CPU也可以通过操作命令字实现对8259A的操作控制。用单脉冲发生器的输出脉冲作为中断源,向CPU发送中断请求,每按一次按键产生一次中断申请,通过控制器使CPU执行中断服务程序,中断服务程序的结果将在实验箱的显示屏显示一个字符“R”。

实验五 8255并行I/O口实验

一、实验要求

利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输入,PB口作输出。

二、实验目的

1、了解8255芯片结构及编程方法。 2、了解8255输入/输出实验方法。

三、预备知识

8255是Intel公司生产的与Intel8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。它有A、B、C三个八位端口寄存器,通过24位端口线与外部设备相连,基中C口可分为上半部和下半部。这24根端口线全部为双向三态。三个端口可分二组来使用,可分别工作于三种不同的工作方式。

四、实验原理图及连线

1、本实验主要用到的模块:8255模块、开关量输出模块、0-1指示模块、实验译码单元等;

2、PA0-PA7分别接开关量输出模块S0-S7对应的插座; 3、PB0-PB7分别接0-1指示模块DO71-DO78对应的插座; 4、8255A的片选/CS接地址译码单元的2A0-2A7; 5、数据线XD0—XD7接系统数据线区的任一插座。

图 5-1

五、实验内容

将实验的线路连接好后,编程,将8255的A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示。

汇编语言程序如下: DATA SEGMENT DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AL,90H ;定义A端口为输入 MOV DX,2A3H ;设置8255A的控制口地址 OUT DX,AL ;写控制字

A: MOV DX,2A0H ;将 PA端口地址送到DX中 IN AL,DX ;从PA口输入数据 MOV DX,2A1H ;将PB端口地址送到DX中 OUT DX,AL ;PB口输出数据 JMP A CODE ENDS END START

六、程序框图

开始

置8255PB口 读8255PA口 延时 置8255工作方式 图 5-2

七、实验步骤

1、参照四中的内容连好线;

2、运行上位机软件,装载并运行相应程序即可(联机调用ZY1LJ.EXE,脱机用ZY1.EXE)。

编写程序时,8255的/CS连线可以接地址译码单元的其他信号,其它连线相同。如果用的端口与本实验不一样,也可以改变IO口的连线。

八、实验总结

可编程并行I/O接口芯片8255可实现数据的快速传输,本实验用芯片的A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示。 PA0~PA7和PB0~PB7均作为8位数据传输线,D0~D7作为数据总线,与CPU进行数据的传输。全速运行程序时,拨动开关,当开关某位置至于L时,相应位置的发光二极管LED灯点亮。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务