《微機(jī)原理實(shí)驗(yàn)3【參照內(nèi)容】》由會(huì)員分享,可在線閱讀,更多相關(guān)《微機(jī)原理實(shí)驗(yàn)3【參照內(nèi)容】(5頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、
實(shí)驗(yàn)三:INT21功能的使用
一.?? 實(shí)驗(yàn)?zāi)康?
1.?????? 了解INT 21H 各功能塊的功能和使用方法
2.?????? 掌握字符方式下PC機(jī)顯示器顯示控制
二.?? 實(shí)驗(yàn)設(shè)備
PC機(jī)一臺(tái)
三.?? 實(shí)驗(yàn)內(nèi)容及步驟
本實(shí)驗(yàn)在顯示器上顯示A~Z 26個(gè)英文字母。顯示器I/O功能調(diào)用使用說(shuō)明如下:
INT 21H使用說(shuō)明
(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機(jī)上顯示:“MY NAME IS ……………”.
B).編程計(jì)算 Z=5678H+6666H-1234H,并把結(jié)果顯示在屏幕上。
C).編程計(jì)算 Z=5678H+0666H÷14H,并把結(jié)果顯示在屏幕上.
D).編程計(jì)算 Z=5678H+0321H×02H,并把結(jié)果顯示在屏幕上。
E).編程計(jì)算 Z=5678H-6666H+8888H,并把結(jié)果顯示在屏幕上。
F).編程計(jì)算 Z=5678H+0666H-ABCDH,并把結(jié)果顯示在屏幕上。
G).編程計(jì)算 Z=0678H÷
3、06H×14H,并把結(jié)果顯示在屏幕上。
五.軟件流程圖和程序清單
A);利用INT 21H功能,在PC機(jī)上顯示:“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
【運(yùn)行結(jié)果】
B);編程計(jì)算 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中的十六進(jìn)制數(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] ;查表找出對(duì)于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
【運(yùn)行結(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,得到對(duì)于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
【運(yùn)行結(jié)果】
F);F編程計(jì)算 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,則顯示’-‘號(hào),并將AX中的負(fù)數(shù),加1取反,求原碼
MOV AH,02
10、H
INT 21H
PUSH AX
DEC AX
NOT AX
CCC:MOV CX,04H ;將AX中的十六進(jìn)制數(shù)顯示在屏幕上
BBB:MOV BX,0010H
MOV DX,0
DIV BX
PUSH AX
MOV DI,DX ;依次求出AX中數(shù)的低位到高位,于DX中
MOV BYTE PTR DL,3700H[DI] ;查表找出對(duì)于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
【運(yùn)行結(jié)果】
六.實(shí)驗(yàn)心得:
這次實(shí)驗(yàn)主要是了解INT 21H 各功能塊的功能和使用方法,編程后6題基本上是相似的,所以選擇了幾個(gè)寫在報(bào)告紙上,在這次實(shí)驗(yàn)里面,我感覺(jué)自己用到了很多寄存器,思路也特別混亂,希望在以后不斷學(xué)習(xí)中,能寫出更合理更簡(jiǎn)單的程序。
5
題目a