ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:18.24KB ,
资源ID:24305680      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24305680.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理实验代码.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理实验代码.docx

1、微机原理实验代码CHECK MACRO CODE,COMPARE MOV AL,0000&CODE&B MOV DX,PORT OUT DX,AL MOV DX,PORT+1 IN AL,DX LEA BX,TAB&COMPARE CMP AL,0FH JNE DISPLAYENDMDATA SEGMENT MESSAGE DB PLEASE INPUT ANYKEY FROM KEYBOARD, PRESS F FOR END.,0DH,0AH,$ TAB1 DB F, E, D, C TAB2 DB B, A, 9, 8 TAB3 DB 7, 6, 5, 4 TAB4 DB 3, 2, 1

2、, 0 KB DB 00EH, 00DH,00BH,007H PORT EQU 280HDATA ENDSSTACK SEGMENT PARA STACK DB 256 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV DX,PORT+3 ;初始化8255 MOV AL,10000010b OUT DX,AL LEA DX,MESSAGE MOV AH,09H INT 21HSEARCH: MOV AL,0 ;若有键按下,按列查找哪个键 MOV DX,PORT

3、 OUT DX,AL MOV DX,PORT+1 IN AL,DX AND AL,0FH CMP AL,0FH JE SEARCH CHECK 1110,1 ;查找按下的键,并显示 CHECK 1101,2 CHECK 1011,3 CHECK 0111,4 NOP JMP SEARCHDISPLAY: MOV DI,BX ;存小键盘扫描码 LEA SI,KBNEXT: CMP AL,SI ;查键盘扫描码表 JE SHOW ;找到了,转去显示 INC SI ;否则继续 INC DI JMP NEXTSHOW: ;显示键入字符 MOV AH,02H MOV DL,DI INT 21H CMP D

4、L,F ;若是F则退出 JE OVER CALL DELAY JMP SEARCH ;重新开始查询OVER: MOV AH,4CH INT 21HDELAY PROC ;延时循环 100*65536次 PUSH DI PUSH CX MOV CX,0FH XOR DI,DIAGAIN: NOP DEC DI JNZ AGAIN DEC CX JNZ AGAIN POP CX POP DI RETDELAY ENDPCODE ENDSEND STARTSET8253 MACRO SEGCODE,SEGOFFSET MOV AL,SEGCODE&B MOV DX,P8253+3 ;工作在模式3 O

5、UT DX,AL MOV AX,3E8H MOV DX,P8253+&SEGOFFSET OUT DX,AL MOV AL,AH ;先赋高八位 再赋低八位 OUT DX,ALENDMLIGHTUP MACRO DIGIT,SELECT LOCAL DELAY MOV DL,DIGIT ;选择位 MOV DH,0 MOV SI,DX MOV AL,BXSI MOV DX,P8255+1 ;点亮LED OUT DX,AL MOV AL,0000&SELECT&B MOV DX,P8255+2 ;PC输出选通信号 OUT DX,AL PUSH CX MOV CX,00F00H ;延时 DELAY:

6、LOOP DELAY POP CX XOR AX,AX MOV DX,P8255+2 ;PC输出选通信号 OUT DX,ALENDMDATA SEGMENT LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH SEC1 DB 0 SEC2 DB 5 MIN1 DB 9 MIN2 DB 5 P8259 EQU 20H P8255 EQU 288H P8253 EQU 280H OLD_0A DW 0,0 ;原中断向量 OLD_8259 DB 0DATA ENDSSTACK SEGMENT PARA STACK DB 256 DUP (0)STACK EN

7、DSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AX CLI SET8253 00110110,0 SET8253 01110110,1 PUSH ES ;设置中断向量表 PUSH BX MOV AL,0BH ;保护原中断向量,0B中断类型号 MOV AH,35H INT 21H ;读中断向量表 MOV OLD_0A+2,ES ;ES为段地址,BX为段偏移地址 MOV OLD_0A,BX POP BX POP ES PUSH DS MOV AL,0BH ;写新中断向量 MOV AH,

8、25H MOV DX,SEG INT_0A MOV DS,DX MOV DX,OFFSET INT_0A INT 21H POP DS MOV AL,10000000B ;对8255进行设置,PB/PC输出 MOV DX,P8255+3 OUT DX,AL IN AL,P8259+1 ;8259奇地址,中断向量屏蔽 MOV OLD_8259,AL ;字设置 保护原屏蔽字 AND AL,11110111B ;开IRQ3 OUT P8259,AL STI ;开中断PLAY: LEA BX,LED ;LED段码 LIGHTUP SEC1,0001 LIGHTUP SEC2,0010 LIGHTUP

9、MIN1,0100 LIGHTUP MIN2,1000 JMP PLAY MOV AH,4CH INT 21HINT_0A PROC NEAR ;中断服务子程序 CMP SEC1,9 JZ INT1 INC SEC1 JMP EXITINT1: MOV SEC1,0 INC SEC2 CMP SEC2,6 JNZ EXIT MOV SEC2,0 INC MIN1 CMP MIN1,10 JNZ EXIT MOV MIN1,0 INC MIN2 CMP MIN2,6 JNZ EXIT MOV MIN2,0EXIT: MOV AL,20H OUT 20H,AL IRETINT_0A ENDPCOD

10、E ENDSEND STARTTRANSSET MACRO ADDRESS,ALNUM MOV DX,ADDRESS MOV AX,ALNUM OUT DX,ALENDM DATA SEGMENT FILE DB D:abc.TXT,0 FCODE DW 0 BUF DB 2000H DUP(0)DATA ENDSSTACK SEGMENT PARA STACK DB 256 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS: CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX TRANSSET 3FBH,80H ;传

11、输线路控制寄存器,寻址除数锁存器 TRANSSET 3F8H,60H ;DLL TRANSSET 3F9H,0 ;DLH TRANSSET 3FBH,1AH ;传输线路控制寄存器,LCR地址,7位数据,1位停止 TRANSSET 3FCH,03H ;MODEM控制寄存器 TRANSSET 3F9H,0 ;屏蔽中断 MOV AH,3DH ;文件操作 LEA DX,FILE MOV AL,2 INT 21H MOV FCODE,AX XOR SI,SI RECEIVE: MOV DX,3FDH ;检测接收数据是否准备好 IN AL,DX TEST AL,01H JZ RECEIVE MOV DX,

12、3F8H IN AL,DX MOV DL,AL MOV AH,02 INT 21HSEND: MOV DX,3FDH ;检测接收数据是否准备好 IN AL,DX TEST AL,20H JZ SEND MOV AH,3FH ;从文件中读取发送 LEA DX,BUF ADD DX,SI MOV BX,FCODE MOV CX,1 INT 21H MOV DX,3F8H MOV AL,BUFSI OUT DX,AL INC SI ;MOV DL,AL ;MOV AH,02 ;将字符显示在屏幕上 ;INT 21H REPT 45 NOP ENDM JMP RECEIVE CODE ENDSEND S

13、TARTTRANSSET MACRO ADDRESS,ALNUM MOV DX,ADDRESS MOV AX,ALNUM OUT DX,ALENDM DATA SEGMENT FILE DB D:abc.TXT,0 FCODE DW 0 BUF DB 2000H DUP(0) IO8254A EQU 280H IO8251A EQU 2B8H IO8251B EQU 2B9HDATA ENDSSTACK SEGMENT PARA STACK DB 256 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV

14、 AX,DATA MOV DS,AX TRANSSET IO8254A+3,00010110B ;设置8254计数器0工作方式,低字节,8位,方式3,二进制 TRANSSET IO8254A,52 ;给8254计数器0送初值(波特率1200,因子16,计数初值52) TRANSSET IO8251B,0 ;初始化8251 TRANSSET IO8251B,40H ;向8251控制端口送40H,使其复位 TRANSSET IO8251B,7EH ;设置为1个停止位,8个数据位,波特率因子为16 TRANSSET IO8251B,27H ;向8251送控制字允许其发送和接收 MOV AH,3CH

15、;文件操作 LEA DX,FILE MOV CX,00 INT 21H MOV FCODE,AX MOV AH,3DH LEA DX,FILE MOV AL,2 INT 21H XOR SI,SISEND: MOV DX,IO8251B IN AL,DX TEST AL,20H ;发送是否准备好 JZ SEND MOV DX,IO8251A MOV AL,F OUT DX,AL ;发送 ;MOV DL,AL ;MOV AH,02 ;将字符显示在屏幕上 ;INT 21H REPT 64 NOP ENDMRECEIVE: MOV DX,IO8251B IN AL,DX TEST AL,01 ;检查

16、接收是否准备好 JZ RECEIVE ;没有,等待 MOV DX,IO8251A IN AL,DX ;准备好,接收 MOV DL,AL MOV AH,02 ;将接收到的字符显示在屏幕上 INT 21H MOV BUFSI,DL MOV AH,40H ;接收到的字符写入文件 LEA DX,BUF ADD DX,SI MOV BX,FCODE MOV CX,1 INT 21H INC SI REPT 45 NOP ENDM JMP SEND MOV AH,4CH INT 21HCODE ENDSEND STARTDATA SEGMENTINT0B DW 2 DUP(?)IMR DB ?P_AD D

17、W 298HTAB DB 0123456789ABCDEFDATA ENDSS SEGMENT STACK STACK DB 128 DUP(?)S ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SMAIN PROC PAR MOV AX,DATA MOV DS,AX CLI ;修改中断向量表 PUSH ES PUSH BX MOV AH,35H ;保护原中断向量 MOV AL,0BH INT 21H MOV INT0B,ES MOV INT0B+2,BX POP BX POP ES PUSH DS PUSH DX MOV DX,OFFSET DISP

18、;设置新的中断向量 PUSH BX MOV BX,SEG DISP MOV DS,BX POP BX MOV AX,250BH INT 21H POP DX POP DS ;8259清除0BH号中断屏蔽位 IN AL,21H MOV IMR,AL AND AL,0F7H OUT 21H,AL ;启动AD转换NEXT: MOV DX,P_AD MOV AL,0 OUT DX,AL ;等待中断,并检测是否有按键 PUSH CX MOV CX,100 LOOP $ POP CX STI MOV AH,1 INT 16H JZ NEXT ;恢复8259中断屏蔽位 CLI MOV AL,IMR OUT

19、21H,AL ;恢复中断向量表 PUSH DX PUSH DS MOV DX,INT0B MOV DS,DX MOV DX,INT0B+2 MOV AX,250BH INT 21H POP DS POP DX MOV AX,4C00H INT 21H MAIN ENDPDISP PROC FAR PUSH AX PUSH DX MOV DX,P_AD ;读入AD转换结果 IN AL,DX MOV AH,0 ;AH中为低位,AL中为高位 SHL AX,4 SHR AL,4 PUSH AX ;输出高位 MOV AL,AH LEA BX,TAB XLATB MOV DL,AL MOV AH,2 IN

20、T 21H POP AX LEA BX,TAB ;输出低位 XLATB MOV DL,AL MOV AH,2 INT 21H MOV DL,0DH ;输出回车 MOV AH,2 INT 21H MOV DL,0AH ;输出回车 MOV AH,2 INT 21H MOV AL,20H OUT 20H,AL POP DX POP AX IRET DISP ENDPCODE ENDS END MAIN DATA SEGMENTADD_DA DW 290HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FAR MOV AX,DATA MOV

21、DS,AX MOV DX,ADD_DA MOV AL,0 NEXT: OUT DX,AL ;向DA送数据 ADD AL,10 MOV CX,5 ;延时 LOOP $ MOV AH,1 ;检测按键 INT 16H JZ NEXT MOV AH,4CH INT 21HMAIN ENDPCODE ENDS END MAINDATA SEGMENTADD_DA DW 290HLEN DB 32DATA_IN DB 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,

22、38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FAR MOV AX,DATA MOV DS,AX MOV DX,ADD_DABEGIN: MOV BH,LEN LEA SI,DATA_INNEXT: MOV AL,SI OUT DX,AL ;向DA送数据 INC SI DEC BH MOV CX,1 ;延时 LOOP $ CMP BH,0 ;一个周期已完成 JZ BEGIN MOV AH,1 ;检测按键 INT 16H JZ NEXT MOV AH,4CH INT 21HMAIN ENDPCODE ENDS END MAIN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1