微机原理实验程序 中国石油大学(华东)
来源:环球网校 发布时间:2020-09-15 点击:
实验3 循环程序设计
实验内容:
数组X,Y,Z,。X=32,-43,76,95,-1;Y=-78,127,-128,-125,88。计算两数之和,送入数组S。
DATA SEGMENT
X DB 32,-43,76,95,-1
Y DB -78,127,-128,-125,88
S DB 5 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX ,DATA
MOV DS,AX
MOV CX,5
MOV SI,0
FOR:MOV AL,X[SI]
ADD AL,Y[SI]
MOV S[SI],AL
INC SI
LOOP FOR
CODE ENDS
END START
两个多位十进制数,X=1357902468,Y=5790123467。计算两数之和(BCD码)。
DATA SEGMENT
X DB 68H,24H,90H,57H,13H
Y DB 67H,34H,12H,90H,57H
S DB 5 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX ,DATA
MOV DS,AX
MOV CX,5
MOV SI,0
CLC
FOR:MOV AL,X[SI]
ADD AL,Y[SI]
DAA
MOV S[SI],AL
INC SI
LOOP FOR
CODE ENDS
END START
实验4 子程序调用变成设计
实验内容:
用子程序调用方法,现有数组X=32,-43,76,95,-1,-78,127,-128,-125,88
?编程按递增顺序排序输出。
DATA SEGMENT
X DB 32,-43,76,95,-1,-78,127,-128,-125,88
ENDS SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX ,DATA
MOV DS,AX
CALL SUB1
MOV AH,4CH
INT 21H
SUB1 PROC NEAR
MOV CX,9
LP1:MOV BX,0
MOV DX,CX
LP2;MOV AL,X[BX]
CMP AL,X[BX+1]
JLE NEXT
XCHG AL,X[BX+1]
NEXT:INC BX
DEC DX
JNE LP2
LOOP LP1
RET
SUB1 ENDP
CODE ENDS
END START
实验5 DOS功能调用
实验内容:
从键盘连续输入五个单个字符,然后再反向输出这5个字符。
输入:12345
输出:54321
CODE SEGMENT
ASSUME CS:CODE
START:MOV CX,5
LP1:
MOV AH,01
INT 21H
PUSH AX
LOOP LP1
MOV DL,0AH
MOV AH,02
INT 21H
MOV DL,0DH
MOV AH,02
INT 21H
MOV CX,5
LP2:
POP DX
MOV AH,02
INT 21H
LOOP LP2
MOV AH,4CH
INT 21H
CODE ENDS
END START
从键盘输入一串字符“abcde”,然后输出3次。
DATA SEGMENT
MAX DB 10
STR DB 10 DUP(‘S’)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MAX
MOV AH,10
INT 21H
MOV CX,3
LP:LEA DX,STR
MOV AH,9
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验10 简单的输出接口实验
实验内容;
利用74LS75设计一个接口电路,使4个LED同时亮,同时灭,中间间隔1秒,共循环5次。
CODE SEGMENT
ASSUME CS:CODE
START:
MOV CX,5
LP;MOV DX,280H
MOV AL,0FH
OUT DX,AL
CALL DELAY
MOV DX,280H
MOV AL,0H
OUT DX,AL
CALL DELAY
LOOP LP
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,03FFH
FOR1:MOV CX,0FFFFH
FOR2;LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
利用74LS75设计一个接口电路,使8个LED循环点亮,中间间隔1秒,共循环3次
CODE SEGMENT
ASSUME CS:CODE
START:
MOV CX,3
MOV SI,8
LP1:
MOV DX,280H
MOV AL,01H
LP2:
OUT DX,AL
CALL DELAY
SHL AL,1
DEC SI
JNZ LP2
LOOP LP1
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,03FFH
FOR1:MOV CX,0FFFFH
FOR2;LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
实验11 简单的输入接口实验
实验内容:
1.设计一个接口电路,当开关来回搬动1次后,在屏幕上输出‘1’,再来回搬动1次,输出‘2’,共搬动5次。利用硬件消抖。(D1)
CODE SEGMENT
ASSUME CS:CODE
START:MOV DL,31H
MOV CX,5
L1:PUSH DX
MOV DX,280H
IN AL,DX
AND AL,01H
MOV AH,AL
L2:IN AL,DX
AND AL,01H
CMP AH,AL
JZ L2
L3:IN AL,DX
AND AL,01H
CMP AH,AL
JNZ L3
POP DX
MOV AH,02H
INT 21H
INC DL
LOOP L1
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.设计一个接口电路,当开关来回搬动1次后,在屏幕上输出‘1’,再来回搬动1次,输出‘2’,共搬动5次。利用软件消抖。(D1)
.
CODE SEGMENT
ASSUME CS:CODE
START:MOV DL,31H
MOV CX,5
L1:PUSH DX
MOV DX,280H
IN AL,DX
AND AL,01H
MOV AH,AL
L2:IN AL,DX
AND AL,01H
CMP AH,AL
JZ L2
CALL DELAY
L3:IN AL,DX
AND AL,01H
CMP AH,AL
JNZ L3
CALL DELAY
POP DX
MOV AH,02H
INT 21H
INC DL
LOOP L1
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,03FH
FOR1:MOV CX,0FH
FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
3. 设计一个接口电路,当开关搬动1次后,在屏幕上输出‘1’,再搬动1次,
?输出‘2’,共搬动5次。(D4)
CODE SEGMENT
ASSUME CS:CODE
START:MOV DL,31H
MOV CX,5
L1:PUSH DX
MOV DX,284H
IN AX,DX
AND AX,10H
MOV SI,AX
L2:IN AX,DX
AND AX,10H
CMP SI,AX
JZ L2
POP DX
MOV AH,02H
INT 21H
INC DL
LOOP L1
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验12 数码管显示实验
1. 使2个七段显示管分别显示HP,字符保持5秒钟。
CODE SEGMENT
ASSUME CS:CODE
START:
MOV CX,03FFH
L1: MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,76H ;H
OUT DX,AL
MOV DX,282H
MOV AL,02H
OUT DX,AL
CALL DONG
MOV DX,282H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,73H;P
OUT DX,AL
MOV DX,280H
MOV AL,01H
OUT DX,AL
CALL DONG
LOOP L1
MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV AH,4CH
INT 21H
DONG PROC NEAR
PUSH CX
PUSH BX
MOV BX,0100H
FOR1: MOV CX,0100H
FOR2: LOOP FOR2
DEC BX
JNZ FOR1
POP BX
POP CX
RET
DONG ENDP
CODE ENDS
END START
使2个七段显示管分别显示01,23,45,67,89,每两个字符保持2秒钟。
CODE SEGMENT
ASSUME CS:CODE
START:
MOV CX,01FFH
L1: MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,3FH ;0
OUT DX,AL
MOV DX,282H
MOV AL,02H
OUT DX,AL
CALL DONG
MOV DX,282H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,06H;1
OUT DX,AL
MOV DX,280H
MOV AL,01H
OUT DX,AL
CALL DONG
LOOP L1
MOV CX,01FFH
L2: MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,5BH ;2
OUT DX,AL
MOV DX,282H
MOV AL,02H
OUT DX,AL
CALL DONG
MOV DX,282H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,4FH;3
OUT DX,AL
MOV DX,280H
MOV AL,01H
OUT DX,AL
CALL DONG
LOOP L2
MOV CX,010FH
L3: MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,66H ;4
OUT DX,AL
MOV DX,282H
MOV AL,02H
OUT DX,AL
CALL DONG
MOV DX,282H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,6DH;5
OUT DX,AL
MOV DX,280H
MOV AL,01H
OUT DX,AL
CALL DONG
LOOP L3
MOV CX,010FH
L4: MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,7DH ;6
OUT DX,AL
MOV DX,282H
MOV AL,02H
OUT DX,AL
CALL DONG
MOV DX,282H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,07H;7
OUT DX,AL
MOV DX,280H
MOV AL,01H
OUT DX,AL
CALL DONG
LOOP L4
MOV CX,010FH
L5: MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,7FH ;8
OUT DX,AL
MOV DX,282H
MOV AL,02H
OUT DX,AL
CALL DONG
MOV DX,282H
MOV AL,00H
OUT DX,AL
MOV DX,290H
MOV AL,6FH;9
OUT DX,AL
MOV DX,280H
MOV AL,01H
OUT DX,AL
CALL DONG
LOOP L5
MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV AH,4CH
INT 21H
DONG PROC NEAR
PUSH CX
PUSH BX
MOV BX,0100H
FOR1: MOV CX,0100H
FOR2: LOOP FOR2
DEC BX
JNZ FOR1
POP BX
POP CX
RET
DONG ENDP
CODE ENDS
END START
实验13 可编程并行接口8255A芯片实验
实验内容:
由8255A方式0的A口输出数据,驱动2个LED,循环点亮5次,每个状态保留1秒。
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL,80H
MOV DX,283H
OUT DX,AL
MOV CX,5
MOV DX,281H
MOV AL,00
L1: MOV AL,01
OUT DX,AL
CALL DELAY
MOV AL,02
OUT DX,AL
CALL DELAY
LOOP L1
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,400
FOR1:MOV CX,0FFFFH
FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
2.用8255A方式1,将两位开关量设置的二进制数,由B口选通输入CPU,三秒钟后,由A口选通输出送LED显示,要求通过对状态字IBFB和OBFA#的测试来控制程序运行。STB#和ACK#由消抖电路产生。
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL
MOV DX,283H
OUT DX,AL
L1: MOV DX,282H
IN AL,DX
AND AL,02H
JZ L1
MOV DX,281H
IN AL,DX
CALL DELAY
MOV DX,280H
OUT DX,AL
L2: MOV DX,282H
IN AL,DX
AND AL,80H
JZ L2
JMP L3
LOOP START
L3:MOV AL,00
MOV DX,280H
OUT DX,AL
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,3FFH
FOR1:MOV CX,0FFFFH
FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
3.由8255A的A接口输出数据,驱动4个LED,使其顺序显示0--F的二进制状态,
?每个状态保持1秒钟。
CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,283H
MOV AL,80H
OUT DX,AL
MOV CX,16
MOV AL,00H
L1:MOV DX,280H
OUT DX,AL
CALL DELAY
INC AL
LOOP L1
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,299H
?FOR1:MOV CX,0FFFFH
?FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
实验14 8253编程测试实验
实验内容:8253方式0测试,用消抖电路产生的脉冲作为CLK0输入信号,OUT0接LED。运行程序5秒将计数器的显示在屏幕上,分析读取的计数常数与CLK0信号的关系。
方式0波形图
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL,90H
MOV DX,283H
OUT DX,AL
MOV AL,05H
MOV DX,282H
OUT DX,AL
CALL DELAY
MOV AL,00H
MOV DX,283H
OUT DX,AL
MOV DX,282H
IN AL,DX
MOV CH,AL
MOV CL,4
AND AL,0F0H
ROL AL,CL
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
AND CH,0FH
MOV DL,CH
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,999H
?FOR1:MOV CX,0FFFFH
?FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
2.8253方式1测试。编程使计数器1工作在方式1 ,CLK1和GATE1信号由消抖电路产生,OUT1接LED,验证CLK1,GATE1,OUT1三者关系。
方式1波形图
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL,52H
MOV DX,283H
OUT DX,AL
MOV AL,05H
MOV DX,281H
OUT DX,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验15 8259A可编程中断控制器
设计中断过程,连续输出 “ARE YOU READY?”产生中断时,执行中断服务程序,中断服务程序是使两个LED灯亮灭3次,间隔一秒。中断结束后,继续执行主程序,等待下次中断。
DATA SEGMENT
ABC DB 'ARE YOU READY?',0DH,0AH,'$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX,CS
MOV DS,AX
MOV DX,OFFSET ZD10
MOV AX,2572H
INT 21H
CLI
IN AL,21H
AND AL,0FBH
OUT 21H,AL
IN AL,0A1H
AND AL,0FBH
OUT 0A1H,AL
STI
MOV CX,20
LOOP1: PUSH CX
MOV AX,DATA
MOV DS,AX
LEA DX,ABC
MOV AH,9
INT 21H
CALL DELAY
POP CX
LOOP LOOP1
MOV DX,21H
IN AL,DX
OR AL,4
OUT 21H,AL
MOV DX,0A1H
IN AL,DX
OR AL,4
OUT 0A1H,AL
MOV AH,4CH
INT 21H
ZD10 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX,3
AGAIN: PUSH CX
MOV DX,280H
MOV AL,0FH
OUT DX,AL
CALL DELAY
MOV DX,280H
MOV AL,00H
OUT DX,AL
CALL DELAY
POP CX
LOOP AGAIN
POP DX
POP CX
POP BX
POP AX
MOV AL,20H
OUT 20H,AL
MOV AL,20H
OUT 0A0H,AL
IRET
ZD10 ENDP
DELAY PROC NEAR
MOV BX,02FFH
FOR1: MOV CX,0FFFFH
FOR2: LOOP FOR2
DEC BX
JNZ FOR1
RET
DELAY ENDP
CODE ENDS
END START
74LS75 控制电路
74LS273 控制电路
推荐访问:中国石油大学华东 微机 中国 石油大学