亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
8086微機(jī)課設(shè)程序
[打印本頁(yè)]
作者:
啊哈哈skj
時(shí)間:
2017-6-19 19:41
標(biāo)題:
8086微機(jī)課設(shè)程序
中南大學(xué)微機(jī)課程設(shè)計(jì)
0.png
(53.5 KB, 下載次數(shù): 74)
下載附件
2017-6-19 22:28 上傳
8086源程序如下:
INCLUDE ZUOZHE.INC
INCLUDE HUANYING.inc
INCLUDE ZAIJIAN.inc
INCLUDE DAIJI.inc
.386P
IOY0 EQU 3000H ;片選 IOY0 對(duì)應(yīng)的端口始地址
IOY1 EQU 3040H
IOY2 EQU 3080H
IOY3 EQU 30C0H
MY8251_DATA EQU IOY2+00H*4 ;8251 數(shù)據(jù)寄存器
MY8251_MODE EQU IOY2+01H*4 ;8251 方式控制寄存器
MY8254_COUNT2 EQU IOY3+02H*4 ;8254 計(jì)數(shù)器 2 端口地址
MY8254_MODE EQU IOY3+03H*4 ;8254 控制寄存器端口地址
MY8255_A EQU IOY0+00H*4 ;8255 的 A 口地址
MY8255_B EQU IOY0+01H*4 ;8255 的 B 口地址
MY8255_C EQU IOY0+02H*4 ;8255 的 C 口地址
MY8255_MODE EQU IOY0+03H*4 ;8255 的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT USE16
ADDR DW ?
DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
STR2 DB ' 1
STR3 DB ' 2
STR4 DB ' 3
STR5 DB ' BYE-BYE
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
A2: MOV ADDR,OFFSET ZUOZHE
MOV SI,ADDR
A1: MOV CX,20H
LOOP2: CALL DISPHZ
SUB SI,32
LOOP LOOP2
CALL CCSCAN
JNZ BEGIN
ADD SI,2
MOV AX,SI
SUB AX,ADDR
CMP AX,96 ;比較文字是否顯示完畢
JNB A2
JMP A1
BEGIN: MOV SI,3000H ;建立緩沖區(qū),存放要顯示的鍵值
MOV AL,00H ;先初始化鍵值為0
MOV [SI],AL
MOV [SI+1],AL
MOV [SI+2],AL
MOV [SI+3],AL
MOV [SI+4],AL
MOV [SI+5],AL
MOV DI,3005H
MOV DX,MY8255_MODE ;初始化 8255 工作方式
MOV AL,81H ;方式 0,A 口、B 口輸出,C 口低 4 位輸入
OUT DX,AL
CALL DIS ;顯示刷新
CALL CLEAR ;清屏
CALL CCSCAN ;掃描按鍵
JNZ GETKEY1 ;有鍵按下則跳置 GETKEY1
JMP BEGIN ;無(wú)按鍵則跳回繼續(xù)循環(huán),有則退出
QUIT: MOV AX,4C00H ;返回到 DOS
INT 21H
GETKEY1:MOV CH,0FEH
MOV CL,00H ;設(shè)置當(dāng)前檢測(cè)的是第幾列
COLUM: MOV AL,CH ;選取一列,將 X1~X4 中一個(gè)置 0
MOV DX,MY8255_A
OUT DX,AL
MOV DX,MY8255_C ;讀 Y1~Y4,用于判斷是哪一行按鍵閉合
IN AL,DX
L1: TEST AL,01H ;是否為第 1 行
JNZ L2 ;不是則繼續(xù)判斷
MOV AL,01H
CALL PUTBUF
JMP KEY1
L2: TEST AL,02H ;是否為第 2 行
JNZ L3 ;不是則繼續(xù)判斷
MOV AL,02H
CALL PUTBUF
JMP KEY2
L3: TEST AL,04H ;是否為第 3 行
JNZ L4 ;不是則繼續(xù)判斷
MOV AL,03H
CALL PUTBUF
JMP KEY3
L4: TEST AL,08H ;是否為第 4 行
JNZ COLUM ;不是則繼續(xù)判斷
MOV AL,04H
CALL PUTBUF
JMP KEY4
KEY1: CALL FINSH
PUSH AX
CALL DIS ;顯示刷新
POP AX
PUSH BX
MOV BX,OFFSET STR2
CALL STRING
POP BX
A21: MOV ADDR,OFFSET HUANYING
MOV SI,ADDR
A11: MOV CX,20H
LOOP21: CALL DISPHZ
SUB SI,32
LOOP LOOP21
CALL CCSCAN
JNZ BEGIN
ADD SI,2
MOV AX,SI
SUB AX,ADDR
CMP AX,96 ;比較文字是否顯示完畢
JNB A21
JMP A11
KEY2: CALL FINSH
PUSH AX
CALL DIS ;顯示刷新
POP AX
MOV BX,OFFSET STR3
CALL STRING
A22: MOV ADDR,OFFSET DAIJI
MOV SI,ADDR
A12: MOV CX,20H
LOOP22: CALL DISPHZ
SUB SI,32
LOOP LOOP22
CALL CCSCAN
JNZ BEGIN
ADD SI,2
MOV AX,SI
SUB AX,ADDR
CMP AX,256 ;比較文字是否顯示完畢
JNB A22
JMP A12
KEY3: CALL FINSH
PUSH AX
CALL DIS ;顯示刷新
POP AX
MOV BX,OFFSET STR4
CALL STRING
A23: MOV ADDR,OFFSET ZAIJIAN
MOV SI,ADDR
A13: MOV CX,20H
LOOP23: CALL DISPHZ
SUB SI,32
LOOP LOOP23
CALL CCSCAN
JNZ BEGIN
ADD SI,2
MOV AX,SI
SUB AX,ADDR
CMP AX,96 ;比較文字是否顯示完畢
JNB A23
JMP A13
KEY4: CALL FINSH
PUSH AX
MOV BX,OFFSET STR5
CALL STRING
CALL DIS ;顯示刷新
POP AX
CALL CLEAR
MOV AX,4C00H ;結(jié)束程序退出
INT 21H
CCSCAN PROC NEAR ;掃描是否有按鍵閉合子程序
MOV AL,00H
MOV DX,MY8255_A ;將 4 列全選通,X1~X4 置 0
OUT DX,AL
MOV DX,MY8255_C
IN AL,DX ;讀 Y1~Y4
NOT AL
AND AL,0FH ;取出 Y1~Y4 的反值
RET
CCSCAN ENDP
DISPHZ PROC NEAR ;顯示 1 屏漢字子程序
PUSH CX
MOV CX,16
MOV BX,0FFFEH
LOOP1: MOV AL,BYTE PTR[SI]
MOV AH,BYTE PTR[SI+1]
ROL EAX,16
MOV AX,BX
ADD SI,2
ROL BX,1
NOT EAX
MOV DX,IOY1
OUT DX,EAX
CALL DALLY
LOOP LOOP1
POP CX
RET
DISPHZ ENDP
DALLY PROC NEAR ;軟件延時(shí)子程序
PUSH CX
PUSH AX
MOV CX,09H
D1: MOV AX,0F000H
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY ENDP
FINSH PROC NEAR
MOV EAX,0 ;滅燈
MOV DX,IOY1
OUT DX,EAX
RET
FINSH ENDP
DIS PROC NEAR ;顯示鍵值子程序
PUSH AX ;以緩沖區(qū)存放的鍵值為鍵值表偏移找到鍵值并顯示
MOV SI,3000H
MOV DL,0DFH
MOV AL,DL
AGAIN: PUSH DX
MOV DX,MY8255_A
OUT DX,AL ;設(shè)置X1~X4,選通一個(gè)數(shù)碼管
MOV AL,[SI] ;取出緩沖區(qū)中存放鍵值
MOV BX,OFFSET DTABLE
AND AX,00FFH
ADD BX,AX
MOV AL,[BX] ;將鍵值作為偏移和鍵值基地址相加得到相應(yīng)的鍵值
MOV DX,MY8255_B
OUT DX,AL ;寫(xiě)入數(shù)碼管A~Dp
CALL DALLY
INC SI ;取下一個(gè)鍵值
POP DX
MOV AL,DL
TEST AL,01H ;判斷是否顯示完?
JZ OUT1 ;顯示完,返回
ROR AL,1
MOV DL,AL
JMP AGAIN ;未顯示完,跳回繼續(xù)
OUT1: POP AX
RET
DIS ENDP
CLEAR PROC NEAR ;清除數(shù)碼管顯示子程序
MOV DX,MY8255_B ;段位置0即可清除數(shù)碼管顯示
MOV AL,00H
OUT DX,AL
RET
CLEAR ENDP
PUTBUF PROC NEAR ;保存鍵值子程序
MOV SI,DI
MOV [SI],AL
DEC DI
CMP DI,2FFFH
JNZ GOBACK
MOV DI,3005H
GOBACK: RET
PUTBUF ENDP
STRING PROC NEAR
MOV AL, 0B6H ;初始化 8254,得到收發(fā)時(shí)鐘
MOV DX, MY8254_MODE
OUT DX, AL
MOV AL, 0CH
MOV DX, MY8254_COUNT2
OUT DX, AL
MOV AL, 00H
OUT DX, AL
CALL INIT ;初始化 8251
CALL DALLY1
MOV AL,7EH
MOV DX, MY8251_MODE
OUT DX, AL ;8251 方式字
CALL DALLY1
MOV AL, 34H
OUT DX, AL ;8251 控制字
CALL DALLY1
MOV CX, 0016H ;10 個(gè)數(shù)
A111: MOV AL, 37H
MOV DX, MY8251_MODE
OUT DX, AL
MOV AL, [BX]
MOV DX, MY8251_DATA
OUT DX, AL ;發(fā)送數(shù)據(jù)
MOV DX, MY8251_MODE
A222: IN AL, DX ;判斷發(fā)送緩沖是否為空
AND AL, 01H
JZ A222
CALL DALLY
A333: IN AL, DX ;判斷是否接收到數(shù)據(jù)
AND AL, 02H
JZ A333
MOV DX, MY8251_DATA
IN AL, DX ;讀取接收到的數(shù)據(jù)并顯示
MOV DL,AL
MOV AH,02H
INT 21H
INC BX
LOOP A111
RET
STRING ENDP
INIT PROC NEAR
MOV AL, 00H ;復(fù)位 8251 子程序
MOV DX, MY8251_MODE
OUT DX, AL
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
微機(jī)課程設(shè)計(jì).zip
(5.55 KB, 下載次數(shù): 33)
2017-6-19 19:40 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1