1、微机原理与接口实验报告实验一INTRL88软件实验杭州电子科技大学自动化09级微机原理与接口实验报告实验名称: INTRL88软件实验 班 级: 学 号: 姓 名: 指导老师: 2011年 月 日实验一 INTEL88软件实验(一) 两个多位十进制数相减实验1.实验要求 将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DATAI和DATA2为首的5个内存单元中(低位在前),并且先后在数码管上显示出来,相减的结果转化为ASCII码送回DATA。2.实验目的 1学习数据传送和算术运算指令的用法。 2熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。3.程序说明
2、:流程图4.源程序清单及执行结果: N EQU 5 CODE SEGMENT ASSUME CS:CODE,DS:CODE START: PUSH CS POP DS LEA SI,DATA1 ;显示子程序入口参数 MOV CX,N CALL LEDSHOW ;显示被减数 CALL DELAY LEA SI,DATA2 MOV CX,N CALL LEDSHOW ;显示减数 CALL DELAY LEA SI,DATA1 LEA DI,DATA2 MOV CX,N CLD CLC MOV AH,00HMINUS: MOV AL,SI AND AL,0FH MOV DL,DI AND DL, 0
3、FH SUB AL,DL SUB AL,AH AAS MOV AH,00H ADC AH,00H OR AL,30H MOV SI,AL INC SI INC DI LOOP MINUS CMP AH,01H JNE SHOW SHOW_SIGN: LEA SI,NEGTIVE MOV CX,1 CALL LEDSHOW CALL DELAY SHOW: LEA SI,DATA1 MOV CX,N CALL LEDSHOW CALL DELAY JMP OVER LEDSHOW PROC PUSH AX PUSH BX PUSH DX PUSHF MOV DX, 239H ;初始化(8279芯
4、片命令字端口) MOV AL, 00 ;左边输入,八位显示外部译码八位显示 OUT DX, AL MOV BX, CX MOV CX, 08 MOV DX, 238H ; 8279芯片数据端口 MOV AL, 00NEXT1: OUT DX, AL ;熄灭所有数码管 LOOP NEXT1 MOV CX, BX NEXT: MOV AL, SI ;取被显示的数 LEA BX, LED ;查表 XLAT ;查表的结果送AL MOV DX, 238H OUT DX, AL ;显示一个数 INC SI LOOP NEXT POPF POP DX POP BX POP AX RETLED DB 45 D
5、UP(00H) DB 40H,80H,00H ;减号,点号字型码 DB 3FH,06H,5BH,4FH ;0-3字型码 DB 66H,6DH,7DH,07H ;4-7字型码 DB 7FH,6FH ;8-9字型码 DB 7 DUP(00H) DB 77H,7CH,39H,5EH ;A-D字型码 DB 79H,71H,7DH,76H ;E-H字型码 DB 0FH ; I字型码 DB 7 DUP(00H) DB 67H,50H,6DH ;Q-S字型码 DB 11 DUP(00H),08H ;_字型码LEDSHOW ENDPDELAY PROC ;延时子程序 PUSH AX PUSH CX PUSHF
6、 MOV AL, 0AHDELAY1:MOV CX, 0FFFFHDELAY2:NOP LOOP DELAY2 DEC AL JNZ DELAY1 POPF POP CX POP AX RETDELAY ENDPOVER: NOP HLT DATA1 DB 34H,35H,36H,37H,38H ;第一个数据(作为被减数)DATA2 DB 35H,34H,35H,36H,37H ;第二个数据(作为减数)RESULT DB 6 DUP(00H) NEGTIVE DB 2DHCODE ENDSEND START ;执行结果:(按显示顺序)87654 76545 11109(二)两个数相乘的实验1.
7、实验要求:实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,并先后显示到数码管上,乘法结果在数码管上显示出来。2.实验目的: 掌握乘法指令和循环指令的用法。3.程序说明: 流程图4.源程序清单及执行结果: N EQU 4CODE SEGMENT ASSUME CS:CODE,DS:CODESTART: PUSH CS POP DS LEA SI,DATA1 MOV CX,N CALL LEDSHOW CALL DELAY LEA SI,DATA2 MOV CX,N CALL LEDSHOW CALL DELAY CLC LEA SI,DATA1 LEA DI,DATA2 LEA
8、 BX,RESULT MOV CX,N MOV AH,00MUL1: PUSH CX MOV DL,DI ;取乘数 AND DL,0FH MOV CX,N LEA SI,DATA1MUL2: MOV AL,SI ;取被乘数 AND AL,0FH MUL DL AAM ADD AL,BX AAA MOV BX,AL INC BX ADD BX,AH INC SI LOOP MUL2 POP CX ;取回乘数循环控制量 SUB BX,N-1 INC DI LOOP MUL1 LEA SI,RESULT MOV CX,N+N CALL LEDSHOW CALL DELAY JMP GAMEOVERL
9、EDSHOW PROC ;显示子程 PUSH AX PUSH BX PUSH DX PUSHF MOV DX,239H MOV AL,00 OUT DX,AL MOV BX,CX MOV CX,08 MOV DX,238H MOV AL,00NEXT1: OUT DX,AL LOOP NEXT1 MOV CX,BXNEXT: MOV AL,SI AND AL,0FH LEA BX,LED XLAT MOV DX,238H OUT DX,AL INC SI LOOP NEXT POPF POP DX POP BX POP AX RETLED DB 3FH,06H,5BH,4FH,66H,6DH,
10、7DH,07H,7FH,6FH,77H,7CH,39H DB 5EH,79H,71HLEDSHOW ENDP ;显示子程结束 DELAY PROC ;延时子程 PUSH AX PUSH CX PUSHF MOV AL,0AHDELAY1:MOV CX,06FFFHDELAY2: NOP LOOP DELAY2 DEC AL JNZ DELAY1 POPF POP CX POP AX RETDELAY ENDP ;延时子程结束GAMEOVER: HLT DATA1 DB 32H,35H,36H,38H ;第一个数据(作为被乘数) DATA2 DB 39H,34H,37H,33H ;第二个数据(作
11、为乘数) RESULT DB 8 DUP(00)CODE ENDS END START;执行结果:(按显示顺序)4455 5682 25313310(三) BCD码相乘实验1.实验要求: 实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内存单元,乘积存入在另外两个内存单元中,由于没有组合的BCD码乘法指令,程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。2.实验目的: 掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。3.程序说明:流程图4.源程序清单及执行结果: N EQU 2CODE SEGMENT ASSUME CS:CODE,DS:
12、CODESTART: PUSH CS POP DS LEA BX,DATA1 MOV AL,BX AND AL,0FH PUSH BX LEA BX,TDATA1 MOV BX,AL POP BX MOV AL,BX MOV CL,4 SHR AL,CL LEA BX,TDATA1 MOV BX+1,AL OR BX,3030H ;TDATA1中存被乘数的ASCII码 LEA SI,TDATA1 MOV CX,N CALL LEDSHOW CALL DELAY LEA BX,DATA2 MOV AL,BX AND AL,0FH PUSH BX LEA BX,TDATA2 MOV BX,AL P
13、OP BX MOV AL,BX MOV CL,4 SHR AL,CL LEA BX,TDATA2 MOV BX+1,AL OR BX,3030H ;TDATA2中存乘数的ASCII码 LEA SI,TDATA2 MOV CX,N CALL LEDSHOW CALL DELAY CLC LEA SI,TDATA1 LEA DI,TDATA2 LEA BX,RESULT MOV CX,N MOV AH,00MUL1: PUSH CX MOV DL,DI ;取被乘数 AND DL,0FH MOV CX,N LEA SI,TDATA1MUL2: MOV AL,SI AND AL,0FH MUL DL
14、AAM ADD AL,BX AAA MOV BX,AL INC BX ADD BX,AH INC SI LOOP MUL2 POP CX ;取回被乘数偏移量 LEA BX,RESULT INC BX INC DI LOOP MUL1 LEA SI,RESULT MOV CX,N+N CALL LEDSHOW CALL DELAY JMP GAMEOVERLEDSHOW PROC ;显示子程 PUSH AX PUSH BX PUSH DX PUSHF MOV DX,239H MOV AL,00 OUT DX,AL MOV BX,CX MOV CX,08 MOV DX,238H MOV AL,00
15、NEXT1: OUT DX,AL LOOP NEXT1 MOV CX,BXNEXT: MOV AL,SI AND AL,0FH LEA BX,LED XLAT MOV DX,238H OUT DX,AL INC SI LOOP NEXT POPF POP DX POP BX POP AX RETLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H DB 5EH,79H,71HLEDSHOW ENDP ;显示子程结束 DELAY PROC ;延时子程 PUSH AX PUSH CX PUSHF MOV AL,0AHDELAY1:MO
16、V CX,06FFFHDELAY2: NOP LOOP DELAY2 DEC AL JNZ DELAY1 POPF POP CX POP AX RETDELAY ENDP ;延时子程结束GAMEOVER: NOP DATA1 DB 22H ;第一个数据(作为被乘数) DATA2 DB 33H ;第二个数据(作为乘数) TDATA1 DB 2 DUP(00) ;存放DATA1的ASCII码,方便调用 TDATA2 DB 2 DUP(00) ;存放DATA2的ASCII码,方便调用 RESULT DB 4 DUP(00)CODE ENDS END START;执行结果:(按显示顺序)22 33 7
17、26心得体会:通过本次的上机实验,让我初步认识了实验台,了解其基本的操作和上面元器件的使用和连接方法。熟悉了INTEL88实验软件LCA88ET的基本操作,熟悉了程序的编写,编译和调试等功能,学会了实验机/仿真机的基本设置方法。通过实验中的编程,让我进一步加深了对微机编程的认识,加深了BCD码和ASCII码的理解,学会了数码管显示子程序和延时子程序的编写。以前只是在书本上学习堆栈、循环、调用子程序等,学习过程中有些还是不明白,通过本次实验加深了理解。实验中也遇到了一些问题,如数码管显示不正确,仿真机和实验机不能连接正常,通过自己仔细查找原因和向同学请教,都一一解决,锻炼了我独立思考,主动解决问题的能力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1