微机实验
- 格式:doc
- 大小:807.00 KB
- 文档页数:24
本科实验报告课程名称:微机原理及应用实验项目:加法程序十六进制数转换为二进制数程序直流电机测速实验十字路口红绿灯闪烁实验实验地点:微机原理实验室专业班级:通信0902班学号:2009001366 学生姓名:赵勇指导教师:任光龙2012年6月本科实验报告课程名称:微机原理及应用实验项目:直流电机测速实验实验地点:微机原理实验室专业班级:通信0902班学号:2009001366 学生姓名:赵勇指导教师:任光龙2012年6月本科实验报告课程名称:微机原理及应用实验项目:十字路口红绿灯闪烁实验实验地点:微机原理实验室专业班级:通信0902班学号:2009001366 学生姓名:赵勇指导教师:任光龙2012年6月本科实验报告课程名称:微机原理及应用实验项目:加法程序实验地点:微机原理实验室专业班级:通信0902班学号:2009001366 学生姓名:赵勇指导教师:任光龙2012年6月本科实验报告课程名称:微机原理及应用实验项目:十六进制数转换为二进制数程序实验地点:微机原理实验室专业班级:通信0902班学号:2009001366学生姓名:赵勇指导教师:任光龙2012年6月加法程序一、实验目的学习数据传送和算数运算指令的用法二、实验内容将两个多位十进制数28056,47193相加,并显示加数,被加数,和。
要求两个加数均以ASCⅡ码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。
三、程序流程图四、参考程序SHOW MACRO BMOV DL, BMOV AH, 02HINT 21HENDMDA TA SEGMENTDA TA1 DB 33H,39H,31H,37H,34HDA TA2 DB 36H,35H,30H,38H,32HDA TA3 DB'-',0DH,0AH,'$'DA TA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START: MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX, TOPMOV SP,AXMOV SI,OFFSET DA TA2MOV BX,05SHOW 20HCALL DISPLSHOW 0DHSHOW 0AHMOV SI,OFFSET DA TA1MOV BX,05SHOW 2BhCALL DISPLSHOW 0DHSHOW 0AHMOV CL,7S1: SHOW 2DHLOOP S1SHOW 0DHSHOW 0AHMOV SI,OFFSET DA TA1MOV DI,OFFSET DA TA2CALL ADDAMOV SI,OFFSET DA TA1MOV BX,05SHOW 20HCALL DISPLMOV AX,4C00HINT 21HDISPL PROC NEARDS1: SHOW [SI+BX-1]DEC BXJNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05ADI: SUB BYTE PTR [SI+BX-1],30HSUB BYTE PTR [DI+BX-1],30HDEC BXJNZ ADIMOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALINC SIINC DILOOP AD2MOV SI,DXMOV DI,BpMOV BX,05AD3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验结果六、思考题不改变数据段DATA1和DATA2的内容,如何将加数与被加数分别由28056和47193变成65082和39174,并且相加答:源程序不变将DATA1 DB 33H,39H,31H,37H,34HDATA2 DB 36H,35H,30H,38H,32H后加上DATA4 DB 37H,34H,31H,39H,33HDATA5 DB 32H,38H,30H,35H,36H并将全部DATA1和DATA2全部改成DATA4和DATA5就可以实现。
十六进制数转换为二进制数程序一、实验目的掌握键盘接收数据的方法,并了解键盘数据显示时需要转换为ASCII码及转换原理。
二、实验内容编写程序,将键盘键入的四位十六进制数转换为等值的二进制数,并在屏幕上显示。
三、程序流程图四、参考程序CRLF MACRO ;宏定义PUSH AX ;把AX压入堆栈PUSH DX ;把DX压入堆栈MOV AH, 02H ;显示回车MOV DL, 0DHINT 21HMOV AH, 02H ;显示换行MOV DL, 0AHINT 21HPOP DX ;弹出DXPOP AX ;弹出AXENDMDA TA SEGMENT ;数据段MESS DB 'INPUT HEXNUMBER:', '$'ERROR DB 'INPUT ERROR', 0DH, 0AH, '$'DA TA ENDSSTACK SEGMENT ;堆栈段STA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENT ;代码段ASSUME CS: CODE, DS: DA TA, ES: DA TA, SS: STACK START: MOV AX, DA TA ;初始化MOV DS, AXMOV ES, AXMOV SP, TOPLLL: MOV AH, 09H ;显示提示信息MOV DX, OFFSET MESS ;把MESS的偏移地址给DXINT 21HCRLFXOR DX, DX ;DX清零MOV BL, 04H ;接收字符个数GGG: MOV AH, 01H ;接收字符INT 21HCMP AL, 0DH ;AL-0DH(判断是不是回车)JZ PPP ;是回车,转PPPCMP AL, 20H ;AL-20H(判断是不是空格)JZ PPP ;是空格,转PPPCMP AL, 30H ;AL-30H(判断是不是ASCII码0)JB KKK ;不是,转KKKSUB AL, 30H ;AL=AL-30H(将ASCII码转换成十六进制数)CMP AL, 0AH ;AL-0AHJB GETS ;结果小于等于0,跳转GETSCMP AL, 11H ;AL-11HJB KKK ;结果小于等于0,跳转KKKSUB AL, 07H ;AL=AL-07HCMP AL, 0FH ;AL-OFHJBE GETS ;结果大于等于0,跳转GETSCMP AL, 2AH ;AL-2AHJB KKK ;结果小于等于0,跳转KKKCMP AL, 2FH ;AL-2FHJA KKK ;结果大于0,跳转KKKSUB AL, 20H ;AL=AL-20HGETS: MOV CL, 04H ;CL=04HSHL DX, CL ;DX左移4位XOR AH, AH ;AH清零ADD DX, AX ;DX=DX-AX(二进制数送DX)DEC BL ;BL=BL-1JNZ GGG ;BL非零,跳转GGG(继续接收)CRLFCALL ZHXS ;调用ZHXSCRLFJMP LLL ;跳转LLLKKK: PUSH DX ;把DX压入堆栈CRLFMOV AH, 09H ;显示错误提示信息MOV DX, OFFSET ERROR ;把ERROR的偏移地址给DXINT 21HPOP DX ;弹出DXPPP: CRLFCALL ZHXS ;调用ZHXSMOV AX, 4C00H ;返回DOSINT 21HZHXS PROC ;显示子程序MOV CX, 0010H ;CX=0010HMOV BX, DX ;BX=DXTTT: ROL BX, 1 ;BX左移一位MOV DL, BL ;DL=BLAND DL, 01H ;DL高位清零ADD DL, 30H ;DL=DL+30HMOV AH, 02H ;INT 21HLOOP TTT ;CX-1非零,,跳转TTTRETZHXS ENDPCODE ENDSEND START五、实验结果六、思考题键盘接收的字符是什么形式的?程序中是如何转换的?答:键盘接收到的字符是ASCII码形式。
若输入的字符为0~9,则将该ASCII码减去30H转换为十六进制数;若为A~F,则将该ASCII码减去37H转换为十六进制数。
然后再进行十六进制数与二进制数的转换。
十字路口红绿灯闪烁实验一、实验目的通过对红,绿,黄灯的控制,熟练掌握掌握8255A接口芯片的变成方法。
二、实验内容对8255A接口芯片进行编辑,是红,绿,黄灯发光二极管按照十字路口交通灯的形式点亮或熄灭。
三、线路连接发光二极管共8个,其中两组红、黄、绿灯用6个,L1,L2,L3为一组,L4,L5,L6为一组,实验台连接如图。
低电平“1”时,点亮。
四、程序流程图五、参考程序程序列表DA TA SEGMENTIOPORT EQU 0D880H-280HIO8255C EQU IOPORT+282HIO8255T EQU IOPORT+283HPB DB ?MESS DB 'ENTER ANY KEY CAN EXIT TO DOS!',0DH,0AH,'$' DA TA ENDSSTACK SEGMENT STACKSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV AH,09HMOV DX,OFFSET MESSINT 21HMOV DX,IO8255TMOV AL,81HOUT DX,ALMOV DX,IO8255CIN AL,DXMOV PB,ALMOV DX,IO8255TMOV AL,80HOUT DX,ALMOV DX,IO8255CMOV AL,PBOR AL,0CHOUT DX,ALMOV AL,30HOUT DX,ALCALL DELAY10LLL: MOV DX,IO8255CMOV AL,12HOUT DX,ALCALL DELAY10CALL DELAY10CALL DELAY10CALL DELAY10MOV AL,10HOUT DX,ALMOV CX,0040HTTT: MOV AL,0CH OUT DX,ALPUSH CXMOV CX,80HLOP1: CALL DELAY1 LOOP LOP1MOV AL,00HOUT DX,ALMOV CX,80HLOP2: CALL DELAY1 LOOP LOP2POP CXLOOP TTTMOV AL,30HOUT DX,ALCALL DELAY10MOV AL,21HCALL DELAY10CALL DELAY10CALL DELAY10CALL DELAY10MOV AL,20HOUT DX,ALMOV CX,0040HGGG: MOV AL,0CH OUT DX,ALPUSH CXMOV CX,80HLOP3: CALL DELAY1 LOOP LOP3MOV AL,00HOUT DX,ALMOV CX,80HLOP4: CALL DELAY1 LOOP LOP4POP CXLOOP GGGMOV AL,30HOUT DX,ALCALL DELAY10MOV AH,06HMOV DL,0FFHINT 21HJNZ PPPJMP LLLPPP: MOV AX,4C00HINT 21HDELAY1 PROC NEARPUSH CXMOV CX,0FFFFHCCC: LOOP CCCPOP CXRETDELAY1 ENDPDELAY10 PROC NEARPUSH AXPUSH CXMOV CX,0F00HUUU: CALL DELAY1LOOP UUUPOP CXPOP AXRETDELAY10 ENDPCODE ENDSEND START六、实验结果七、思考题程序中红,绿,黄灯点亮和熄灭的延时时间是如何设定的?答:通过用延时子程序CALL DELAY 10的次数来设定。