西电微机基础原理实验报告.doc
,.微机系统实验报告班 级: 031214 学 号: 03121370 姓 名: 孔玲玲 地 点: E-II-312 时 间: 第二批 实验一 汇编语言编程实验一、实验目的(1) 掌握汇编语言的编程方法(2) 掌握DOS功能调用的使用方法(3) 掌握汇编语言程序的调试运行过程二、实验设备PC机一台。三、实验内容(1) 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。(2) 在屏幕上显示自己的学号姓名信息。(3) 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入“Q”或“q”时结束。(4) 自主设计输入显示信息,完成编程与调试,演示实验结果。考核方式:完成实验内容(1)(2)(3)通过, 完成实验内容(4)优秀。实验中使用的DOS功能调用: INT 21H表3-1-1 显示实验中可使用DOS功能调用AH 值功 能调 用 参 数结 果1键盘输入并回显AL=输出字符2显示单个字符(带Ctrl+Break检查)DL=输出字符光标在字符后面6显示单个字符(无Ctrl+Break检查)DL=输出字符光标在字符后面8从键盘上读一个字符AL=字符的ASCII码9显示字符串DS:DX=串地址,$为结束字符光标跟在串后面4CH返回DOS系统AL=返回码四、实验步骤(1) 运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。(2) 使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3) “调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。(4) 更改数据区的数据,考察程序的正确性。5、 实验程序DATA SEGMENTBUFFER DB 03121370konglingling:,0AH,0DH,$BUFFER2 DB aAbBcC,$BUFFER3 DB 0AH,0DH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXmov ah,09hmov DX,OFFSET BUFFERint 21hMOVSI,OFFSET BUFFER2lab1:cmp BYTE PTR SI,$je lab2MOVAL,DS:SIANDAL,0F0H;取高4位MOVCL,4SHRAL,CLCMPAL,0AH;是否是A以上的数JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;show character MOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH;取低4位CMPAL,0AHJBC3ADD AL,07HC3:ADDAL,30HMOVDL,AL;show character MOVAH,02HINT21Hadd SI,1jmp lab1lab2:mov ah,09hmov DX,OFFSET BUFFER3int 21hmov ah,01hint 21hcmp al,qje lab3mov BL,ALANDAL,0F0H;取高4位MOVCL,4SHRAL,CLCMPAL,0AH;是否是A以上的数JBC4ADDAL,07HC4:ADDAL,30HMOVDL,AL;show character MOVAH,02HINT21HMOV AL,BLANDAL,0FH;取低4位CMPAL,0AHJBC5ADD AL,07HC5:ADDAL,30HMOVDL,AL;show character MOVAH,02HINT21Hjmp lab2lab3:mov ah,4chint 21hCODE ENDSend START6、 实验结果实验二 数码转换实验一、实验目的(1) 掌握不同进制数及编码相互转换的程序设计方法。(2) 掌握运算类指令编程及调试方法。(3) 掌握循环程序的设计方法。二、实验设备PC机一台。三、实验内容及说明(1) 重复从键盘输入不超过5位的十进制数,按回车键结束输入;(2) 将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;(3) 如果输入非数字字符,则报告出错信息,重新输入;(4) 直到输入“Q”或q时程序运行结束。(5) 键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。考核方式:完成实验内容(1)(2)(3)(4)通过, 完成实验内容(5)优秀。转换过程参考流程如图3-2-2所示。十进制数可以表示为:Dn*10n+Dn-1*10n-1+D0*100=S Di*10i其中Di代表十进制数1、2、3、9、0。上式可以转换为:S Di*10i=(Dn*10+Dn-1)*10+ Dn-2)*10+ D1)*10+ D0由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位Dn开始做乘10加次位的操作。依此类推,则可求出二进制数结果。表3-3-1 数码转换对应关系十六进制BCD码二进制机器码ASCII码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA10141H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H4、 实验程序;PAGE60,132;本实验将输入的ASCII码转换为二进制,要求输入位数小于5DATASEGMENTMES DB0AH,0DH,The Ascii code of Decimal code are: $MSG1 DB 0AH,0DH,0AH,0DH,0AH,0DH,Please Input(Exit:q/Q):$MSG2 DB 0AH,0DH,Input: $MSG3 DB 0AH,0DH,Input Error, Please input again!,0AH,0DH,$;BIN DB 2 DUP(0)BUFDB30H,30H,30H,31H,35HDB10H DUP(0)NDW0DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOV DI,OFFSET BUFCLCMOV DX,OFFSET MSG1 MOV AH,09H ;显示字符串 INT 21H MOVDX,OFFSET MSG2MOVAH,09HINT21HA1: MOVAH,01H;接收键盘输入INT21HCMP AL,Q JZ EXIT CMP AL,q JZ EXIT CMP AL,39HJA ERRORINCNSTOSB;将输入数据存放在BUF缓冲区中CMPAL,13JNEA1MOVCX,NDECCXMOV BX,000AHMOV SI,OFFSET BUFMOVAH,0MOVDX,0LODSBCMPCX,1JEA3SUB AL,30H;将BUF中数据转换为二十进制数DECCXA2:IMUL BXMOVDX,AXLODSBMOVAH,0A3:SUB AL,30HADDAX,DXLOOP A2MOV SI,AXMOVDX,OFFSET MESMOVAH,09HINT21HINCSI;显示高字节CALLSHOWDECSI;显示低字节CALLSHOWMOV N,0 LOOP STARTSHOWPROCNEARMOVAL,DS:SIANDAL,0F0H;取高4位MOVCL,4SHRAL,CLCMPAL,0AH;是否是A以上的数JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;show character MOVAH,06HINT21HMOVAL,DS:SIANDAL,0FH;取低4位CMPAL,0AHJBC3ADD AL,07HC3:ADDAL,30HMOVDL,AL;show character MOVAH,06HINT21HRETSHOWENDPEXIT: MOV AX,4C00H INT 21H ERROR: MOVDX,OFFSET MSG3MOVAH,09HINT21HJMP START CODE ENDS END START5、 实验结果实验三 基本IO口扩展实验一、实验目的了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。二、实验内容说明74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。其引脚图如下:74LS273是一种带清除功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。其引脚图如下:本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。具体实验内容如下:(1) 当开关Yi为低电平时对应的发光二极管点亮,Yi为高电平时对应的发光二极管灭。(2) 当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。(3) 当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。(4) 自主设计控制及显示模式,完成编程调试,演示实验结果。 编程方法见IO(样例程序).txt.(在编译环境下程序名后缀为.asm且不能含有汉字)考核方式:完成实验内容(1)(2)(3)通过。 完成实验内容(4)优秀三、实验原理图图3-2-1 74LS244与74LS273扩展I/O口原理图实验连线图:图3-2-2 扩展I/O口连线图四、实验步骤(1)实验连线: 244的CSISA总线接口模块的0000H,Y7Y0开关K1K8。 273的CSISA总线接口模块的0020H,Q7Q0发光二极管L1L8。 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)连到ISA总线接口模块的数据(LD0LD7)。(2)编写实验程序,编译链接,运行程序(3)拨动开关,观察发光二极管的变化。五、实验程序1、笨方法实现(主要代码):START: MOV AX,MY_DATA MOV DS,AX MOV AX,MY_STACK MOV SS,AX LOP: MOV DX,0DF00H IN AL,DX CMP AL,00H JE C0 CMP AL,0FFH JE C3 ;JE EXIT MOV DX,0DF20H OUT DX,AL JMP LOPC0: MOV AL,0FEH JMP C1 C3: MOV AL,07FH JMP C2 C1: ;ROL AL,1 ;MOV DX,0DF20H ;OUT DX,AL ;CALL DELAY ;CALL BREAK ;JE C1 ;CMP AL,0FEH ;JE EXIT ;JMP C1 ;MOV AL,0FCH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FDH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FBH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0F7H MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0EFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0DFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0BFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,07FH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK CALL DELAY CALL BREAK JMP LOP ;CALL DELAY ;CALL BREAK IN AL,DX CMP AL,080H JMP EXIT C2:MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0BFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0DFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0EFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0F7H MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FBH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FDH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FEH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK MOV AL,0FFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAK CALL DELAY CALL BREAK JMP LOP IN AL,DX CMP AL,080H JMP EXIT EXIT: MOV AH,4CH INT 21H2、 循环左移右移实现:主要代码:(1)右移:LOP: MOV DX,0DF00H IN AL,DX CMP AL,0FFH JE C0 ;JE EXIT MOV DX,0DF20H OUT DX,AL JMP LOPC0: MOV AL,07FH JMP C1 C1: ROR AL,1 MOV DX,0DF20H OUT DX,AL CALL DELAY call break ;CMP AL,0FEH ;JE EXIT JMP C1 IN AL,DX CMP AL,080H JMP EXIT(2)循环左移:LOP: MOV DX,0DF00H IN AL,DX CMP AL,00H JE C0 ;JE EXIT MOV DX,0DF20H OUT DX,AL JMP LOPC0: MOV AL,0FEH JMP C1 C1: ROl AL,1 MOV DX,0DF20H OUT DX,AL CALL DELAY call break ;CMP AL,0FEH ;JE EXIT JMP C1 IN AL,DX CMP AL,080H JMP EXIT实验四 可编程并行接口8255实验一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。二、实验内容(1) 流水灯实验:利用8255的A口、B口循环点亮发光二极管。(2) 交通灯实验:利用8255的A口模拟交通信号灯。(3) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。(4) 通过开关控制交通红绿灯的亮灭。(5) 通过开关控制流水灯的循环方向和循环方式。 考核方式:完成实验内容(1)(2)(3)其中之一通过,完成实验内容(4)或(5)优秀。三、实验说明1、8255A的内部结构(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。2、8255A的工作方式方式0基本输入输出方式;方式1选通输入输出方式;方式2双向选通输入输出方式图6-3-1 8255方式1的状态字 图6-3-2 8255 方式2的状态字。3、8255A的状态字4、8255A的控制字表6-3-3 8255A方式控制字1D6D5D4D3D2D1D0特征位A组方式00=方式0 01=方式11X=方式2A口0=输出1=输入C口高4位0=输出1=输入B组方式0=方式01=方式1B口0=输出1=输入C口低4位0=输出1=输入表6-3-4 按位置位/复位控制字0D6D5D4D3D2D1D0特征位不用位选择000=C口0位111=C口7位0=复位1=置位四、实验原理图图6-3-5 可编程并行接口8255电路五、实验步骤1、流水灯实验(1) 实验连线 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)、地址线(A0A7)分别连到ISA总线接口模块的数据(LD0LD7)、地址线(LA0LA7)。 8255模块选通线CE连到ISA总线接口模块的0000H。 8255的PA0PA7连到发光二极管的L0L7;8255的PB0PB7连到发光二极管的L8L15。(2) 运行程序,观察发光二极管。图6-3-6 流水灯实验2、交通灯实验(1) 实验连线: 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)、地址线(A0A7)分别连到ISA总线接口模块的数据(LD0LD7)、地址线(LA0LA7)。 8255模块选通线CE连到ISA总线接口模块的0000H。 8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。(2)运行程序,观察发光二极管。图6-3-7 交通灯实验3、I/O输入输出实验(1) 实验连线 该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)、地址线(A0A7)分别连到ISA总线接口模块的数据(LD0LD7)、地址线(LA0LA7)。 8255模块选通线CE连到ISA总线接口模块的0000H。 8255的PA0PA7接开关K0K7,8255的PB0PB7接发光二极管L0L7。图6-3-8 I/O输入输出实验(2) 运行程序,拨动开关,观察发光二极管。6、 实验程序主要程序:;*;/*初始状态全为红灯*/;*;ST0PROC NEARMOVAL,1BHOUTDX,ALCALLDELAYRETST0ENDp;*;/*南北为绿灯,东西为红灯子程序*/;*;ST1PROC NEARMOVDX,P8255_AMOVAL,33HOUTDX,ALCALLDELAYCALL BREAKCALLDELAYCALL BREAKCALLDELAYCALL BREAKRETST1ENDp;*;/*南北红灯闪烁,东西为红灯子程序*/;*;ST2PROC NEARMOVCX,5HST20:MOVAL,2BHOUTDX,ALCALLDELAYMOVAL,3BHOUTDX,AlCALLDELAYLOOPST20RETST2ENDp;*;/*南北为红灯,东西为绿灯子程序*/;*;ST3PROC NEARMOVAL,1EHOUTDX,ALCALLDELAYCALL BREAKCALLDELAYCALL BREAKCALLDELAYCALL BREAKRETST3ENDp;*;/*南北为红灯,东
收藏
- 资源描述:
-
,.
微机系统实验报告
班 级: 031214
学 号: 03121370
姓 名: 孔玲玲
地 点: E-II-312
时 间: 第二批
实验一 汇编语言编程实验
一、实验目的
(1) 掌握汇编语言的编程方法
(2) 掌握DOS功能调用的使用方法
(3) 掌握汇编语言程序的调试运行过程
二、实验设备
PC机一台。
三、实验内容
(1) 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。
(2) 在屏幕上显示自己的学号姓名信息。
(3) 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入“Q”或“q”时结束。
(4) 自主设计输入显示信息,完成编程与调试,演示实验结果。
考核方式:完成实验内容(1)(2)(3)通过,
完成实验内容(4)优秀。
实验中使用的DOS功能调用: INT 21H
表3-1-1 显示实验中可使用DOS功能调用
AH 值
功 能
调 用 参 数
结 果
1
键盘输入并回显
AL=输出字符
2
显示单个字符(带Ctrl+Break检查)
DL=输出字符
光标在字符后面
6
显示单个字符(无Ctrl+Break检查)
DL=输出字符
光标在字符后面
8
从键盘上读一个字符
AL=字符的ASCII码
9
显示字符串
DS:DX=串地址,‘$’为结束字符
光标跟在串后面
4CH
返回DOS系统
AL=返回码
四、实验步骤
(1) 运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。
(2) 使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。
(3) “调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。按F9连续运行。
(4) 更改数据区的数据,考察程序的正确性。
5、 实验程序
DATA SEGMENT
BUFFER DB 03121370konglingling:,0AH,0DH,$
BUFFER2 DB aAbBcC,$
BUFFER3 DB 0AH,0DH,$
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
mov ah,09h
mov DX,OFFSET BUFFER
int 21h
MOV SI,OFFSET BUFFER2
lab1:
cmp BYTE PTR [SI],$
je lab2
MOV AL,DS:[SI]
AND AL,0F0H ;取高4位
MOV CL,4
SHR AL,CL
CMP AL,0AH ;是否是A以上的数
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H
add SI,1
jmp lab1
lab2:
mov ah,09h
mov DX,OFFSET BUFFER3
int 21h
mov ah,01h
int 21h
cmp al,q
je lab3
mov BL,AL
AND AL,0F0H ;取高4位
MOV CL,4
SHR AL,CL
CMP AL,0AH ;是否是A以上的数
JB C4
ADD AL,07H
C4: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H
MOV AL,BL
AND AL,0FH ;取低4位
CMP AL,0AH
JB C5
ADD AL,07H
C5: ADD AL,30H
MOV DL,AL ;show character
MOV AH,02H
INT 21H
jmp lab2
lab3:
mov ah,4ch
int 21h
CODE ENDS
end START
6、 实验结果
实验二 数码转换实验
一、实验目的
(1) 掌握不同进制数及编码相互转换的程序设计方法。
(2) 掌握运算类指令编程及调试方法。
(3) 掌握循环程序的设计方法。
二、实验设备
PC机一台。
三、实验内容及说明
(1) 重复从键盘输入不超过5位的十进制数,按回车键结束输入;
(2) 将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;
(3) 如果输入非数字字符,则报告出错信息,重新输入;
(4) 直到输入“Q”或‘q’时程序运行结束。
(5) 键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。
考核方式:完成实验内容(1)(2)(3)(4)通过,
完成实验内容(5)优秀。
转换过程参考流程如图3-2-2所示。
十进制数可以表示为:Dn*10n+Dn-1*10n-1+…+D0*100=S Di*10i
其中Di代表十进制数1、2、3、…、9、0。
上式可以转换为:S Di*10i=(((Dn*10+Dn-1)*10+ Dn-2)*10+…+ D1)*10+ D0
由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位Dn开始做乘10加次位的操作。
依此类推,则可求出二进制数结果。
表3-3-1 数码转换对应关系
十六进制
BCD码
二进制机器码
ASCII码
七段码
共阳
共阴
0
0000
0000
30H
40H
3FH
1
0001
0001
31H
79H
06H
2
0010
0010
32H
24H
5BH
3
0011
0011
33H
30H
4FH
4
0100
0100
34H
19H
66H
5
0101
0101
35H
12H
6DH
6
0110
0110
36H
02H
7DH
7
0111
0111
37H
78H
07H
8
1000
1000
38H
00H
7FH
9
1001
1001
39H
18H
67H
A
101
41H
08H
77H
B
1011
42H
03H
7CH
C
1100
43H
46H
39H
D
1101
44H
21H
5EH
E
1110
45H
06H
79H
F
1111
46H
0EH
71H
4、 实验程序
; PAGE 60,132
;本实验将输入的ASCII码转换为二进制,要求输入位数小于5
DATA SEGMENT
MES DB 0AH,0DH,The Ascii code of Decimal code are: $
MSG1 DB 0AH,0DH,0AH,0DH,0AH,0DH,Please Input(Exit:q/Q):$
MSG2 DB 0AH,0DH,Input: $
MSG3 DB 0AH,0DH,Input Error, Please input again!,0AH,0DH,$
;BIN DB 2 DUP(0)
BUF DB 30H,30H,30H,31H,35H
DB 10H DUP(0)
N DW 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET BUF
CLC
MOV DX,OFFSET MSG1
MOV AH,09H ;显示字符串
INT 21H
MOV DX,OFFSET MSG2
MOV AH,09H
INT 21H
A1: MOV AH,01H ;接收键盘输入
INT 21H
CMP AL,Q
JZ EXIT
CMP AL,q
JZ EXIT
CMP AL,39H
JA ERROR
INC N
STOSB ;将输入数据存放在BUF缓冲区中
CMP AL,13
JNE A1
MOV CX,N
DEC CX
MOV BX,000AH
MOV SI,OFFSET BUF
MOV AH,0
MOV DX,0
LODSB
CMP CX,1
JE A3
SUB AL,30H ;将BUF中数据转换为二——十进制数
DEC CX
A2: IMUL BX
MOV DX,AX
LODSB
MOV AH,0
A3: SUB AL,30H
ADD AX,DX
LOOP A2
MOV [SI],AX
MOV DX,OFFSET MES
MOV AH,09H
INT 21H
INC SI ;显示高字节
CALL SHOW
DEC SI ;显示低字节
CALL SHOW
MOV N,0
LOOP START
SHOW PROC NEAR
MOV AL,DS:[SI]
AND AL,0F0H ;取高4位
MOV CL,4
SHR AL,CL
CMP AL,0AH ;是否是A以上的数
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL ;show character
MOV AH,06H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;show character
MOV AH,06H
INT 21H
RET
SHOW ENDP
EXIT: MOV AX,4C00H
INT 21H
ERROR: MOV DX,OFFSET MSG3
MOV AH,09H
INT 21H
JMP START
CODE ENDS
END START
5、 实验结果
实验三 基本IO口扩展实验
一、实验目的
了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。
二、实验内容说明
74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。
其引脚图如下:
74LS273是一种带清除功能的8D触发器, 1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
其引脚图如下:
本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。
具体实验内容如下:
(1) 当开关Yi为低电平时对应的发光二极管点亮,Yi为高电平时对应的发光二极管灭。
(2) 当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。
(3) 当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。
(4) 自主设计控制及显示模式,完成编程调试,演示实验结果。
编程方法见IO(样例程序).txt.(在编译环境下程序名后缀为.asm且不能含有汉字)
考核方式:完成实验内容(1)(2)(3)通过。
完成实验内容(4)优秀
三、实验原理图
图3-2-1 74LS244与74LS273扩展I/O口原理图
实验连线图:
图3-2-2 扩展I/O口连线图
四、实验步骤
(1)实验连线:
244的CS——ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。
273的CS——ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。
该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)连到ISA总线接口模块的数据(LD0~LD7)。
(2)编写实验程序,编译链接,运行程序
(3)拨动开关,观察发光二极管的变化。
五、实验程序
1、笨方法实现(主要代码):
START: MOV AX,MY_DATA
MOV DS,AX
MOV AX,MY_STACK
MOV SS,AX
LOP: MOV DX,0DF00H
IN AL,DX
CMP AL,00H
JE C0
CMP AL,0FFH
JE C3
;JE EXIT
MOV DX,0DF20H
OUT DX,AL
JMP LOP
C0: MOV AL,0FEH
JMP C1
C3: MOV AL,07FH
JMP C2
C1: ;ROL AL,1
;MOV DX,0DF20H
;OUT DX,AL
;CALL DELAY
;CALL BREAK
;JE C1
;CMP AL,0FEH
;JE EXIT
;JMP C1
;MOV AL,0FCH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FDH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FBH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0F7H
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0EFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0DFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0BFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,07FH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
CALL DELAY
CALL BREAK
JMP LOP
;CALL DELAY
;CALL BREAK
IN AL,DX
CMP AL,080H
JMP EXIT
C2:
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0BFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0DFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0EFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0F7H
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FBH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FDH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FEH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
MOV AL,0FFH
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
CALL BREAK
CALL DELAY
CALL BREAK
JMP LOP
IN AL,DX
CMP AL,080H
JMP EXIT
EXIT: MOV AH,4CH
INT 21H
2、 循环左移右移实现:
主要代码:
(1)右移:
LOP: MOV DX,0DF00H
IN AL,DX
CMP AL,0FFH
JE C0
;JE EXIT
MOV DX,0DF20H
OUT DX,AL
JMP LOP
C0: MOV AL,07FH
JMP C1
C1: ROR AL,1
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
call break
;CMP AL,0FEH
;JE EXIT
JMP C1
IN AL,DX
CMP AL,080H
JMP EXIT
(2)循环左移:
LOP: MOV DX,0DF00H
IN AL,DX
CMP AL,00H
JE C0
;JE EXIT
MOV DX,0DF20H
OUT DX,AL
JMP LOP
C0: MOV AL,0FEH
JMP C1
C1: ROl AL,1
MOV DX,0DF20H
OUT DX,AL
CALL DELAY
call break
;CMP AL,0FEH
;JE EXIT
JMP C1
IN AL,DX
CMP AL,080H
JMP EXIT
实验四 可编程并行接口8255实验
一、实验目的
了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。
二、实验内容
(1) 流水灯实验:利用8255的A口、B口循环点亮发光二极管。
(2) 交通灯实验:利用8255的A口模拟交通信号灯。
(3) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。
(4) 通过开关控制交通红绿灯的亮灭。
(5) 通过开关控制流水灯的循环方向和循环方式。
考核方式:完成实验内容(1)(2)(3)其中之一通过,完成实验内容(4)或(5)优秀。
三、实验说明
1、8255A的内部结构
(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。
(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2、8255A的工作方式
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式图6-3-1 8255方式1的状态字 图6-3-2 8255 方式2的状态字
。
3、8255A的状态字
4、8255A的控制字
表6-3-3 8255A方式控制字
1
D6
D5
D4
D3
D2
D1
D0
特
征
位
A组方式
00=方式0 01=方式1
1X=方式2
A口
0=输出
1=输入
C口高4位
0=输出
1=输入
B组方式
0=方式0
1=方式1
B口
0=输出
1=输入
C口低4位
0=输出
1=输入
表6-3-4 按位置位/复位控制字
0
D6
D5
D4
D3
D2
D1
D0
特征位
不用
位选择
000=C口0位……111=C口7位
0=复位
1=置位
四、实验原理图
图6-3-5 可编程并行接口8255电路
五、实验步骤
1、流水灯实验
(1) 实验连线
该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。
8255模块选通线CE连到ISA总线接口模块的0000H。
8255的PA0~PA7连到发光二极管的L0~L7;8255的PB0~PB7连到发光二极管的L8~L15。
(2) 运行程序,观察发光二极管。
图6-3-6 流水灯实验
2、交通灯实验
(1) 实验连线:
该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。
8255模块选通线CE连到ISA总线接口模块的0000H。
8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。
(2)运行程序,观察发光二极管。
图6-3-7 交通灯实验
3、I/O输入输出实验
(1) 实验连线
该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。
8255模块选通线CE连到ISA总线接口模块的0000H。
8255的PA0~PA7接开关K0~K7,8255的PB0~PB7接发光二极管L0~L7。
图6-3-8 I/O输入输出实验
(2) 运行程序,拨动开关,观察发光二极管。
6、 实验程序
主要程序:
;*****************************************************************************
; /*初始状态全为红灯*/
;*****************************************************************************
;
ST0 PROC NEAR
MOV AL,1BH
OUT DX,AL
CALL DELAY
RET
ST0 ENDp
;
;*****************************************************************************
; /*南北为绿灯,东西为红灯子程序*/
;*****************************************************************************
;
ST1 PROC NEAR
MOV DX,P8255_A
MOV AL,33H
OUT DX,AL
CALL DELAY
CALL BREAK
CALL DELAY
CALL BREAK
CALL DELAY
CALL BREAK
RET
ST1 ENDp
;
;*****************************************************************************
; /*南北红灯闪烁,东西为红灯子程序*/
;*****************************************************************************
;
ST2 PROC NEAR
MOV CX,5H
ST20: MOV AL,2BH
OUT DX,AL
CALL DELAY
MOV AL,3BH
OUT DX,Al
CALL DELAY
LOOP ST20
RET
ST2 ENDp
;
;*****************************************************************************
; /*南北为红灯,东西为绿灯子程序*/
;*****************************************************************************
;
ST3 PROC NEAR
MOV AL,1EH
OUT DX,AL
CALL DELAY
CALL BREAK
CALL DELAY
CALL BREAK
CALL DELAY
CALL BREAK
RET
ST3 ENDp
;
;*****************************************************************************
; /*南北为红灯,东
展开阅读全文