要求:
1:將首地址為1000H開始存放的16個單字節(jié)數(shù)組,將這些數(shù)取平均值后,存放在1010H開始的存儲單元中。
2:將放在1010H開始的數(shù)轉(zhuǎn)換成壓縮的BCD瑪。存放在1020H開始的存儲單元中
3:將存放在1020H開始的壓縮的BCD碼轉(zhuǎn)換成非壓縮的BCD碼,放在1030H開始的存儲單元中
4:將存放在1030H數(shù)轉(zhuǎn)換成LED顯示值(共陰極)放在1040H開始的單元中
5:將存放在1040H的全部數(shù)據(jù)送CRT顯示
程序的思路老師講過,我用了26分鐘搞完 呵呵
程序:
DATA SEGMENT
ORG 1000H
STRING DB 0FFH,0FFH,0H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
ORG 1010H
H1 DB 3 DUP(?)
ORG 1020H
H2 DW 1 DUP(?)
ORG 1030H
H3 DB 3 DUP(?)
ORG 1040H
H4 DB 3 DUP(?)
ORG 1050H
H5 DB 03FH,06H,05BH,04FH,66H,06DH,07DH,07H,07FH,06FH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
FIRST: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
CALL Z1
CALL Z2
CALL Z3
CALL Z4
CALL Z5
RET
START ENDP
Z1 PROC NEAR
SUB SI,SI
SUB AX,AX
MOV CX,16
SUB BX,BX
A: MOV BL,STRING[SI]
ADC AX,BX
INC SI
LOOP A
MOV DL,10H
DIV DL
MOV [H1],AL
SUB DL,DL
RET
Z1 ENDP
Z2 PROC NEAR
SUB AH,AH
B: SUB AL,100
INC DX
CMP AL,100
JAE B
MOV CL,4
SHL DX,CL
C: SUB AL,10
INC DX
CMP AL,10
JAE C
SHL DX,CL
ADD DX,AX
MOV [H2],DX
RET
Z2 ENDP
Z3 PROC NEAR
MOV CL,4
MOV [H3],DH
MOV AL,DL
MOV CL,4
SHL AX,CL
SHR AL,CL
MOV [H3+1],AH
MOV [H3+2],AL
RET
Z3 ENDP
Z4 PROC NEAR
SUB SI,SI
MOV BX,1050H
D: MOV AL,H3[SI]
XLAT
MOV H4[SI],AL
INC SI
CMP SI,3
JB D
RET
Z4 ENDP
Z5 PROC NEAR
SUB SI,SI
E: MOV DL,H4[SI]
INC SI
MOV BL,DL
MOV CL,4
SHR DL,CL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
AND DL,0FH
CMP DL,09H
JA F
ADD DL,30H
MOV AH,02H
INT 21H
CMP SI,3H
JB E
RET
F: ADD DL,37H
MOV AH,02H
INT 21H
CMP SI,3H
JB E
RET
Z5 ENDP
CODE ENDS
END FIRST