《微機原理實驗3【參照內(nèi)容】》由會員分享,可在線閱讀,更多相關(guān)《微機原理實驗3【參照內(nèi)容】(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
實驗三:INT21功能的使用
一.?? 實驗?zāi)康?
1.?????? 了解INT 21H 各功能塊的功能和使用方法
2.?????? 掌握字符方式下PC機顯示器顯示控制
二.?? 實驗設(shè)備
PC機一臺
三.?? 實驗內(nèi)容及步驟
本實驗在顯示器上顯示A~Z 26個英文字母。顯示器I/O功能調(diào)用使用說明如下:
INT 21H使用說明
(1)入口:AH=01H
功能: 鍵盤輸入字符,AL=輸入字符
(2)入口:AH=02H,DL=數(shù)據(jù)(ASCII碼)
功能:寫DL中的數(shù)據(jù)到屏幕上
(3)入口:AH=09H,DS:DX=字串首址,且字符串尾用$ 填充
2、 功能:顯示一字串,直到遇到$ 為止。
四.?? 編程練習(xí)
A).利用INT 21H功能,在PC機上顯示:“MY NAME IS ……………”.
B).編程計算 Z=5678H+6666H-1234H,并把結(jié)果顯示在屏幕上。
C).編程計算 Z=5678H+0666H÷14H,并把結(jié)果顯示在屏幕上.
D).編程計算 Z=5678H+0321H×02H,并把結(jié)果顯示在屏幕上。
E).編程計算 Z=5678H-6666H+8888H,并把結(jié)果顯示在屏幕上。
F).編程計算 Z=5678H+0666H-ABCDH,并把結(jié)果顯示在屏幕上。
G).編程計算 Z=0678H÷
3、06H×14H,并把結(jié)果顯示在屏幕上。
五.軟件流程圖和程序清單
A);利用INT 21H功能,在PC機上顯示:“MY NAME IS ……………”
DATAS SEGMENT
STRING DB 'MY NAME IS ZHANGSHAOJUN!','$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING ;獲取要顯示字符串首地址
MOV AH,09H ;顯示字符
4、INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
【運行結(jié)果】
B);編程計算 Z=5678H+6666H-1234H,并把結(jié)果顯示在屏幕上。
查表法:
DATAS SEGMENT
ORG 0300H
TAB DB "0","1","2","3","4","5","6","7","8",
"9","A","B","C","D","E","F"
NUM DW 5678H,6666H,1234H
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES
5、,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,NUM
MOV AX,[SI]
ADC AX,[SI+2]
SUB AX,[SI+4]
MOV CX,04H ;將AX中的十六進制數(shù)顯示在屏幕上
BBB:MOV BX,0010H
MOV DX,0
DIV BX ;依次求出AX中數(shù)的低位到高位,于DX中
PUSH AX
MOV DI,DX
MOV BYTE PTR DL,030
6、0H[DI] ;查表找出對于ASCII碼值,存入DL中,顯示
MOV AH,02H
INT 21H
POP AX
LOOP BBB
MOV DL,'H' ;顯示’H’
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
【運行結(jié)果】
求值法:
CODES SEGMENT
ASSUME CS:CODES
START:
MOV AX,5678H+6666H-1234H
MOV CX,4
R
7、OL AX,CL
CCC:PUSH AX
AND AX,000FH
CMP AX,09H
JC BBB ;CF=1,跳轉(zhuǎn)
ADD AX,07H ;CF=0,AX中值加07H
BBB:ADD AX,30H ;AX中數(shù)值加30H,得到對于ASCII值
MOV DX,AX
MOV AH,02H ;顯示一位
INT 21H
POP AX
PUSH CX
MOV CL,4
ROL AX,CL ;右移4位,將所要顯示數(shù)字置于AX最低位
8、
POP CX
LOOP CCC
MOV DL,'H' ;顯示’H’
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
【運行結(jié)果】
F);F編程計算 Z=5678H+0666H-ABCDH,并把結(jié)果顯示在屏幕上。
DATAS SEGMENT
ORG 3700H
TAB DB "0","1","2","3","4","5","6","7","8",
"9","A","B","C","D","E","F"
NUM DW
9、 5678H,0666H,0ABCDH
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,NUM
MOV AX,[SI]
ADD AX,[SI+2]
SUB AX,[SI+4]
PUSH AX
JNB CCC ;CF位為0,則轉(zhuǎn)移
MOV DL,'-' ;CF位為1,則顯示’-‘號,并將AX中的負(fù)數(shù),加1取反,求原碼
MOV AH,02
10、H
INT 21H
PUSH AX
DEC AX
NOT AX
CCC:MOV CX,04H ;將AX中的十六進制數(shù)顯示在屏幕上
BBB:MOV BX,0010H
MOV DX,0
DIV BX
PUSH AX
MOV DI,DX ;依次求出AX中數(shù)的低位到高位,于DX中
MOV BYTE PTR DL,3700H[DI] ;查表找出對于ASCII碼值,存入DL中,顯示
MOV AH,02H
INT 21H
PUSH AX
LOOP BBB
MOV DL,'H' ;顯示’H’
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
【運行結(jié)果】
六.實驗心得:
這次實驗主要是了解INT 21H 各功能塊的功能和使用方法,編程后6題基本上是相似的,所以選擇了幾個寫在報告紙上,在這次實驗里面,我感覺自己用到了很多寄存器,思路也特別混亂,希望在以后不斷學(xué)習(xí)中,能寫出更合理更簡單的程序。
5
題目a