版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精品word可編輯資料- - - - - - - - - - - - -此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)一:簡(jiǎn)潔程序設(shè)計(jì)試驗(yàn)(1) 編寫一個(gè) 32 位無符號(hào)數(shù)除法的程序,要求將存放在 num1中的 32 位無符號(hào)數(shù)與存放在 num2 中的 16 位無符號(hào)數(shù)相除,結(jié)果存放在num3 和 num4中;程序流程圖略;參考源程序:datasegmentnum1 dd 2a8b7654h num2 dw 5abch num3 dw .num4 dw .dataendscodesegmentassume ds:data, cs:codestart:mov ax,data;數(shù)據(jù)段寄存器初始化mo
2、v ds,axmov ax, word ptr num1 mov dx, word ptr num1+2 div num2mov num3,ax mov num4,dxmov ah,4ch;正常返回 dos 系統(tǒng)int 21hcodeends end start(2) 編寫一個(gè)拆字程序;要求將存放在ary 單元的 2 位十六進(jìn)制數(shù) x 1x 2 拆為 x 1 和 x 2 兩部分,并以 0x 1 和 0x 2 的形式分別存入 ary+1和 ary+2 單元中;程序流程圖略;參考源程序:datasegment ary db 2ah,.,.dataendscodesegmentassume ds:d
3、ata, cs:codestart:mov ax,datamov ds,axmov si,offset ary;取ary 的偏移地址mov al,si;取16進(jìn)制數(shù)至 al只供學(xué)習(xí)溝通用第 31 頁,共 31 頁- - - - - - - - - -此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除mov bl,aland al,0f0h;取16進(jìn)制數(shù)的高四位,即x1shr al,4mov si+1,almov al,bl;存0x 1and al,0fh;取16進(jìn)制數(shù)的低四位,即x2mov si+2,al;存0x 2mov ah,4chint 21hcodeends end start只供學(xué)習(xí)溝通用此文
4、檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)二:分支程序設(shè)計(jì)試驗(yàn)(1) 編寫一個(gè)字符比較程序,比較3 個(gè)無符號(hào)字節(jié)數(shù)a ,b , c 的大小,并依據(jù)比較結(jié)果對(duì)變量 k 賦值:假如 3 個(gè)數(shù)不相等,就 k=0 ;假如 3 個(gè)數(shù)中有兩個(gè)相等,就k=1 ; 假如 3 個(gè)數(shù)都相等,就 k=2 ;程序流程圖略;參考源程序:data segment;定義待比較數(shù) a 、b、c,比較結(jié)果 k a db 20hb db 20h c db 20h k db .dataendscodesegmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov al,acmp
5、al,b;對(duì)a 、b進(jìn)行比較,不相等就轉(zhuǎn)到comp2jne comp2;相等就比較 a 、ccmp al,cjne k1 jmp k2; a 、c不相等就 k=1; a 、c相等就 k=2comp2:mov bl,bcmp bl,cje k1;對(duì) b、 c進(jìn)行比較,相等就 k=1cmp al,cje k1;對(duì) a 、c進(jìn)行比較,相等就 k=1k0:mov k,0jmp exitk1:mov k,1jmp exitk2:mov k,2exit:mov ah,4ch只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除int 21hcodeends end start(2) 編寫一個(gè)能實(shí)現(xiàn)以下表達(dá)
6、式的程序:.n = .a + ba b設(shè) a , b, c 為小于 128 的正整數(shù);. a - b + c程序流程圖略;參考源程序:a bdatasegmenta db 22hb db 10h c db 01h;定義a 、b、c、nn db .dataendscodesegmentassume cs:code, ds:datastart:mov ax,data mov ds,axmov al, acmp al, b jg calculadd al,b;a小于或等于 b 就 n=a+bjmp exitcalcul: sub al, badc al, cexit:mov n, al mov ah
7、,4ch int 21hcodeendsend start只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)三 循環(huán)程序設(shè)計(jì)試驗(yàn)(1) 將字符串 strn (以 “ $結(jié)”尾)中的每一個(gè)字符均加上偶校驗(yàn)位,并統(tǒng)計(jì)有多少個(gè)字符因含有奇數(shù)個(gè) “ 1而”加上了校驗(yàn)位;統(tǒng)計(jì)結(jié)果存于n單元中;程序流程圖略;參考源程序:da tasegmentstrn db what$;任意定義一個(gè)字串,以“$”結(jié)尾count equ $-strn n db .buf db count dup.dataendscodesegmentassume cs:code, ds:data start:mov ax, dat
8、amov ds, ax mov ax, data mov es, axlea si, strn lea di, buf mov cx, count mov al, 0lp1:mov bl, si;逐個(gè)取字符進(jìn)行判定and bl, bl;自己和自己做與運(yùn)算jp next;依據(jù) pf 標(biāo)志位的變化進(jìn)行跳轉(zhuǎn)inc alorbl, 80h next:mov di, blinc si inc di loop lp1mov n, almov ah, 4ch int 21hcodeendsend start(2) 在 first開頭的一片連續(xù)的數(shù)據(jù)區(qū)中存放著100 個(gè)數(shù)據(jù),編寫一個(gè)程序,統(tǒng)計(jì)第1只供學(xué)習(xí)溝通
9、用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除個(gè)數(shù)據(jù) 0之前的數(shù)據(jù)個(gè)數(shù);程序流程圖略; 參考源程序:da tasegmentfirst db 10h,24h,34h, 73h,20h,44h,03h,36h,41h;任取 9 個(gè)數(shù)做演示count equ $-firstnum db .dataendscodesegmentassume cs:code, ds:data start:mov ax,datamov ds,axmov dl, 0;計(jì)數(shù)值初始為 0mov cx,countmov bx, offset firstlp1:mov al, bx;每次取一個(gè)數(shù),與0 比較cmp al, 00h j
10、ne nextjmp exit;找到 0 就退出next:inc dl;沒找到 0 就計(jì)數(shù)值加 1 inc bxloop lp1exit:mov num, dlmov ah, 4ch int 21hcodeendsend start只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)四:子程序設(shè)計(jì)試驗(yàn)將buf 開頭的 10個(gè)單元中兩位十六進(jìn)制數(shù)轉(zhuǎn)換成ascii 碼,并在屏幕上顯示出來; 要求碼型轉(zhuǎn)換通過子程序 hexasc 實(shí)現(xiàn),參數(shù)傳送采納寄存器傳送方式;程序流程圖略;參考源程序 :(1) 實(shí)現(xiàn)方法一:遠(yuǎn)過程調(diào)用da ta segmentbuf db 10h,2fh,0d0h,0feh
11、,33h,0f0h,20h,10h,3dh,0a2hcount equ $-buf;定義任意長(zhǎng)度的一段buf da ta endsstack1 segment stackdb 100 dup.;設(shè)置足夠深度的棧區(qū)stack1 endscodesegmentassume cs:code,ds:data,ss:stack1 start:mov ax,datamov ds,axmov si,offset buf mov cx,countagain:mov al,si;逐個(gè)取數(shù)mov bl,alshr al,4and al,0fh;先對(duì)高字節(jié)部分轉(zhuǎn)換(寄存器al 傳參)call far ptr hex
12、asc;調(diào)用子程序mov dl,almov ah,02h;顯示高字節(jié)部分對(duì)應(yīng)的字符int 21hmov al,bland al,0fh;再對(duì)低字節(jié)部分轉(zhuǎn)換(寄存器al 傳參)call far ptr hexasc;調(diào)用子程序mov dl,almov ah,02h;顯示低字節(jié)部分對(duì)應(yīng)的字符int 21hmov dl,20hmov ah,02h;顯示空格int 21h只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除inc siloop againmov ah,4ch int 21hcodeendscodebsegmentassume cs:codeb hexascproc farcmp al
13、,09h;判定是不是數(shù)字ja hexatof;是字母就轉(zhuǎn)到 hexatofadd al,30h;是數(shù)字就對(duì)應(yīng)到數(shù)字的ascii碼jmp endhexhexatof:add al,37h;是字母就對(duì)應(yīng)到字母的ascii碼endhex: rethexascendpcodebendsend start(2) 實(shí)現(xiàn)方法二:近過程調(diào)用da ta segmentbuf db 10h,2fh,0d0h,0feh,33h,0f0h,20h,10h,3dh,0a2hcount equ $-buf;定義任意長(zhǎng)度的一段buf da ta endsstack1 segment stackdb 100 dup.;設(shè)置足
14、夠深度的棧區(qū)stack1 endscodesegmentassume cs:code,ds:data,ss:stack1 start:mov ax,datamov ds,axmov si,offset buf mov cx,countagain:mov al,simov bl,al;逐個(gè)取數(shù)shr al,4and al,0fhcall hexasc;先對(duì)高字節(jié)部分做轉(zhuǎn)換只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除mov dl,al;顯示高字節(jié)部分對(duì)應(yīng)的字符mov ah,02h int 21hmov al,bland al,0fh;再對(duì)低字節(jié)部分做轉(zhuǎn)換call hexascmov dl
15、,al;顯示低字節(jié)部分對(duì)應(yīng)的字符mov ah,02h int 21hmov dl,20h;顯示空格mov ah,02h int 21hinc si;連續(xù)循環(huán)或退出loop againmov ah,4ch int 21hhexascproc nearcmp al,09h jahexatof addal,30h jmp endhexhexatof:add al,37h endhex: ret hexascendpcodeends end start只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)五:dos 中斷調(diào)用試驗(yàn)(1)假如從鍵盤上依次輸入的是一個(gè)數(shù)字和一個(gè)字母,就輸出“ right
16、 ”標(biāo)記后終止程序, 否就輸出標(biāo)記 “error ”后轉(zhuǎn)向原出錯(cuò)處重做;試編程實(shí)現(xiàn)該功能;程序流程圖略;參考源程序 :da tasegmentmsg db 0ah,0dh,right,0ah,0dh,$ wrn db 0ah,0dh,error,0ah,0dh,$dataendscodesegmentassume cs:code, ds:data start:mov ax,datamov ds,axagain:mov ah,01h;等待用戶輸入 1 個(gè)字符并顯示int 21h cmp al,39h ja emsg cmp al,30hjb emsg;判定輸入是否是數(shù)字,不是就報(bào)錯(cuò)mov ah,
17、01h;等待用戶輸入 1 個(gè)字符并顯示int 21h cmp al,a jb emsgcmp al,z;判定輸入是否是大寫字母,不是就連續(xù)jb exit;判定是不是小寫字母cmp al,a jb emsg cmp al,zjb exit;不是字母就報(bào)錯(cuò),是字母就轉(zhuǎn)到exitemsg:lea dx,wrnmov ah,09h int 21hjmp againexit:mov dx,offset msgmov ah,09h;顯示 “ right”并退出 int 21hmov ah,4ch只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除int 21hcodeends end start( 2)
18、編寫一程序分類統(tǒng)計(jì)字符個(gè)數(shù):即接收鍵入的一串字符(字符個(gè)數(shù)不超過 50個(gè),該字符串用回車作為終止) ,并按數(shù)字、字母和其它字符分類計(jì)數(shù),然后將結(jié)果存入 digit 、letter 和other 3 個(gè)儲(chǔ)備單元中,并顯示結(jié)果;程序流程圖略;參考源程序 :da tasegmentmsg1 db 0ah, 0dh, number of digit:,20h,$ msg2 db 0ah, 0dh, number of letters:, 20h,$msg3 db 0ah, 0dh, number of other characters:, 20h, $ buf db 50db 0db 50 dup.;
19、設(shè)置足夠深的棧區(qū)digit db . letter db . other db .dataendsstack1segment stackdb 100 dup. stack1endscodesegmentassume cs:code,ds:data,ss:stack1 start:mov ax,datamov ds,axmov ah,0ah;等待用戶輸入字符串并顯示mov dx,offset buf int 21hmov si, offset buf mov cl,si+1mov ch,00h mov al,00h mov ah,00h mov bh,00hagain: mov bl,si+2c
20、mp bl,30hjb oth; ascii 碼小于 30h 就歸類為 “其它 ”cmp bl,3ah只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除jb dig; ascii 碼大于等于 30h 小于 3ah 就歸類為 “數(shù)字 ”cmp bl,41hjb oth; ascii 碼大于等于 3ah 小于 41h 就歸類為 “其它 ”cmp bl,5bhjb let;ascii 碼大于等于 41h 小于 5bh 就歸類為 “字母 ”cmp bl,61hjb oth; ascii 碼大于等于 5bh 小于 61h 就歸類為 “其它 ”cmp bl,7bhjb let; ascii 碼大于等于
21、 61h 小于 7bh 就歸類為 “字母 ”oth:inc al; “其它 ”計(jì)數(shù)器加 1 jmp endlpdig:let:inc ah; “數(shù)字 ”計(jì)數(shù)器加 1jmp endlpinc bh; “字母 ”計(jì)數(shù)器加 1endlp:inc siloop again;連續(xù)循環(huán)mov digit, ah;統(tǒng)計(jì)各類個(gè)數(shù)mov letter, bh mov other, almov dx, offset msg1 mov ah,09hint 21hmov al, digit call disp;顯示 “數(shù)字 ”有多少個(gè)mov dx, offset msg2 mov ah,09hint 21hmov a
22、l, letter call disp;顯示 “字母 ”有多少個(gè)mov dx, offset msg3 mov ah,09hint 21hmov al, other call disp;顯示 “其它 ”有多少個(gè)mov ah,4ch int 21hdispproc near;顯示子程序只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除mov ah,00h mov dh,0ah div dhmovch,ah addal,30h movdl,al mov ah, 02h int 21hadd ch,30h mov dl, ch mov ah, 02h int 21hretdispendpcode
23、ends end start只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)六:擴(kuò)展定時(shí)器 / 計(jì)數(shù)器接口試驗(yàn)( 1)計(jì)數(shù)器 0工作于方式 3,編寫初始化程序,觀看其輸出 out0 信號(hào)的波形;修改計(jì)數(shù)初值,觀看 out0 信號(hào)的變化情形; 硬件連接方法: 8254計(jì)數(shù)器 0的clk0 端接規(guī)章的脈沖輸入(頻率自選), out0 接示波器的 正極;示波器負(fù)極接地;程序流程圖略;參考源程序:data segmentdb 100 dup. data endscodesegmentstart:assume cs:code, ds:datamov ax,datamov ds,axmov dx
24、,20fh;寫入計(jì)數(shù)器 0的掌握字mov al,00010110bout dx,almov dx,20ch;寫入計(jì)數(shù)器 0的計(jì)數(shù)初值mov al,05hout dx,almov ah,4chint 21hcodeendsend start( 2)將計(jì)數(shù)器 1和計(jì)數(shù)器 0 級(jí)聯(lián)起來,二者均工作于方式3,編寫初始化程序,觀看out1 和out0 信號(hào)的波形,說明二者的關(guān)系;修改計(jì)數(shù)初值,觀看out0 和out1 輸出波形的變化情形; 硬件連接方法: 8254 計(jì)數(shù)器 1的clk1 端接規(guī)章的脈沖輸入(頻率自選),out1 接8254計(jì)數(shù) 器0的clk0 ,計(jì)數(shù)器 0的輸出 out0 接示波器正極;
25、示波器負(fù)極接地;程序流程圖略;參考源程序:datasegment db 100 dup.dataendscodesegment只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除start:assume cs:code,ds:datamov ax,datamov ds,axmov dx,20fhmov al,00010110bout dx,al;寫入計(jì)數(shù)器0的掌握字mov dx,20chmov al,05h;寫入計(jì)數(shù)器0的計(jì)數(shù)初值out dx,almov dx,20fhmov al,01010110b out dx,almov dx,20dh;寫入計(jì)數(shù)器;寫入計(jì)數(shù)器1的掌握字1的計(jì)數(shù)初值mo
26、v al,02hout dx,almov ah,4chint 21hcodeendsend start只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)七:并行輸入 / 輸出接口 8255a簡(jiǎn)潔編程試驗(yàn)(1) 利用 8255a 的 b 口輸出掌握兩組發(fā)光二級(jí)管l1,l3,l5,l7和 l2,l4,l6,l8亮滅交替變化;分析:依據(jù)題目要求,當(dāng) 8255a 的 b 口輸出為 01010101b55h 時(shí),發(fā)光二極管 l1,l3,l5,l7 會(huì)被點(diǎn)亮,當(dāng) 8255a 的 b 口輸出為 10101010b 0aah 時(shí),發(fā)光二極管 l2,l4,l6,l8 會(huì)被點(diǎn)亮;因此,通過延時(shí)轉(zhuǎn)變 825
27、5a 的 b 口輸出,即可實(shí)現(xiàn)兩組發(fā)光二極管的亮滅交替變化;由于 led 隨時(shí)出于預(yù)備好的狀態(tài),因此 8255a 的 b 口可工作于方式0 輸出, 其它端口未使用,無需考慮;因此,8255a 的方式掌握字為:10000000b80h ;硬件連接方法:8255a 的 b 口 pb0pb7 分別連接 l1l8 ;程序流程圖略;參考源程序:.486datasegmentporta dw 208h;8255a 端口 a地址portb dw 209h;8255a 端口 b地址portc dw 20ah;8255a 端口 c地址dataport_ctr dw 20bhends;8255a 掌握端口地址st
28、ack1segment stackdb 100 dup. stack1endscodesegmentassume cs:code, ds:data, ss:stack1 start:mov ax,datamov ds,axmov dx, port_ctr;8255a 初始化mov al, 10000000b;掌握字out dx, almov dx, portb;8255a 端口b清零, led 初始化 全滅 mov al, 00h out dx, allp0:mov bl, 01010101b mov al, blout dx, alcall delay只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)
29、請(qǐng)聯(lián)系網(wǎng)站刪除not almov bl, almov ah, 01h;調(diào)用 bios 的 16h 功能判定鍵盤是否有輸入int 16hjnz exitjmp lp0exit:mov ah, 4ch int 21hdelayproc near;延時(shí)子程序 可通過修改 nop 指令數(shù)量轉(zhuǎn)變延時(shí)時(shí)間mov ecx, 0fffffffhlp2:noploopd lp2delayretendpcodeendsend start(2) 利用 8255a 的 a 口讀入 8 個(gè)開關(guān) k1k8的狀態(tài),當(dāng)只有k1 合上時(shí), l1l8顯示00000001b ;當(dāng)只有 k1 和 k2 合上時(shí), l1l8 顯示 00
30、000010b;當(dāng)只有 k1,k2 和 k3 合上時(shí), l1l8 顯示 00000011b;當(dāng)只有 k1,k2,k3 和 k4 合上時(shí), l1l8 顯示 00000100b ; 直到全部開關(guān)合上時(shí), l1l8 顯示 00001000b ,并終止程序的運(yùn)行;發(fā)光二極管的狀態(tài)通過 8255a 的 b 口進(jìn)行掌握;分析:依據(jù)題目要求,可以通過查詢的方式讀取8255a 的 b 口狀態(tài),并依據(jù)查詢的結(jié)果給a口送出相應(yīng)數(shù)據(jù), a 口工作在方式 0 的輸入狀態(tài), b 口工作在方式 0 輸出狀態(tài), c 口不需要考慮,所以 8255a 的方式掌握字為:10010000b )硬件連接方法:( 1) 8255a 的
31、 a 口 pa0pa7 對(duì)應(yīng)連接 k1k8 ;( 2) 8255a 的 b 口 pb0pb7 對(duì)應(yīng)連接 l1l8 ; 源代碼:datasegmentlistdb 01h, 03h, 07h, 0fh, 1fh, 3fh, 7fh, 0ffh dataendsstack1segment stackdb 100 dup. stack1endscodesegmentassume cs:code, ds:data, ss:stack1 start:mov ax, data只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除mov ds, axmov dx, 20bh;8255a 初始化mov al,
32、 10010000b out dx, almov dx, 209h;8255a 的b口清零, led 初始化 全滅 mov al, 00h out dx, all0:mov dx, 208h;讀8255a 的a口,獲得開關(guān)狀態(tài)inal, dxmov bl, 00h mov cx, 8mov si, offset listl1:inc blcmp al, si jzfind inc si loop l1 jmp l0find:mov al, bl mov dx, 209h out dx, al cmp al, 08h jnz l0mov ah, 4ch int 21hcodeends end s
33、tart;當(dāng)前開關(guān)狀態(tài)為表中所列狀態(tài)之一;顯示 led 狀態(tài)只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)八:并行輸入 / 輸出接口 8255a綜合應(yīng)用試驗(yàn)( 1)利用 8254計(jì)數(shù)器 0、計(jì)數(shù)器 1和8255a 的b 口實(shí)現(xiàn)對(duì)發(fā)光二極管的定時(shí)掌握,讓8個(gè)發(fā)光二極管每隔 1s從左到右依次點(diǎn)亮;(要求計(jì)數(shù)器1的時(shí)鐘脈沖頻率為 250khz );分析: 依據(jù)題目要求,需要利用8254進(jìn)行定時(shí) 1s掌握,定時(shí)到后,轉(zhuǎn)變8255a 的b口輸出;可以利用中斷的方式實(shí)現(xiàn), 8254定時(shí)到時(shí)向 cpu申請(qǐng)中斷, cpu 相應(yīng)中斷后在中斷程序中轉(zhuǎn)變8255a 的b口輸出; 由于題目要求 8254的
34、輸入脈沖頻率為250khz ,所以需要級(jí)聯(lián)計(jì)數(shù)器1和計(jì)數(shù)器 0實(shí)現(xiàn) 1s定時(shí)(參考程序中利用計(jì)數(shù)器1進(jìn)行 20ms定時(shí),計(jì)數(shù)器 0進(jìn)行 50次計(jì)數(shù),計(jì)數(shù)次數(shù)到時(shí)由 out0 向cpu 申請(qǐng)中斷); 8255a 的b口掌握 led ,可工作在方式 0輸出, a 口未使用,為了選通試驗(yàn)板上的中斷輸入 c口的 pc7須輸出低電平,因此 c口的高四位工作在方式0輸出;綜合上述要求, 8254和8255a 的初始化參數(shù)為:8254計(jì)數(shù)器 1的計(jì)數(shù)初值為: n=20ms/4 s=5000d ;方式掌握字為:01110100b 74h8254計(jì)數(shù)器 0的計(jì)數(shù)初值為: n=50d ;方式掌握字為: 00010
35、100b 14h8255a 的方式掌握字:10000000b( 80h ); c口按位置位 /復(fù)位掌握字: 00001110b 0eh 使pc7復(fù)位,答應(yīng) 8254的out0 中斷到達(dá)系統(tǒng) 8259的irq3 端此外,利用中斷方式實(shí)現(xiàn)題目要求的功能仍需要設(shè)置系統(tǒng)8259芯片的中斷屏蔽字和系統(tǒng)儲(chǔ)備器中的中斷向量表(修改中斷類型號(hào)為0bh 的中斷向量);硬件連接方法:(1) 250khz 脈沖輸出接 8254的clk1 , out1 接clk0 , out0 接irq ;(2) 8255a 的b口pb0pb7 對(duì)應(yīng)連接 l1l8 ;程序流程圖略;參考源程序:datasegmentport0 dw
36、20ch;8254計(jì)數(shù)器 0端口地址port1 dw 20dh;8254計(jì)數(shù)器 1端口地址port2 dw 20eh;8254計(jì)數(shù)器 2端口地址port3 dw 20fh;8254掌握寄存器端口地址porta dw 208h;8255a 的a 口端口地址portb dw 209h;8255a 的b口端口地址portc dw 20ah;8255a 的c口端口地址dataport_ctr dw 20bh ends;8255a 的掌握寄存器端口地址stack1segment stackdb 100 dup0 stack1endscodesegmentassume cs:code, ds:data,
37、es:data, ss:stack1只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除start:mov ax, datamov ds, ax mov es, axmov al, 80h; 8255初始化 , b 口方式 0輸出, c口高 4位輸出mov dx, port_ctrout dx, almov al, 0eh;pc7清零,答應(yīng) 8254中斷到 irq3 out dx, almov al, 00h;發(fā)光二極管初始化 全滅 mov dx, portbout dx, almov ax, 350bh;儲(chǔ)存系統(tǒng)原有 0bh 號(hào)中斷的中斷向量至堆棧int 21h push es push
38、bxmov ax, seg intproc mov ds, axmov dx, offset intprocmov ax, 250bh;將程序要求的中斷向量寫入int 21hin al, 21h;設(shè)置 8259的imr 寄存器,答應(yīng) irq3 中斷and al, 0f7hout 21h, alsti;開中斷, cpu 可以響應(yīng)外部可屏蔽中斷mov dx, port3;8254 計(jì)數(shù)器 0初始化mov al, 14hout dx, almov dx, port0;計(jì)數(shù)器 0寫入計(jì)數(shù)初值 50d mov al, 50dout dx, almov dx, port3;8254 計(jì)數(shù)器 1初始化mov
39、 al, 74hout dx, almov dx, port1;計(jì)數(shù)器 1寫入計(jì)數(shù)初值 5000d mov ax, 5000dout dx, al mov al, ah out dx, al只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除mov bh, 80hmov al, bh;bh 存放當(dāng)前 8255a 的b口輸出mov dx, portb;8255a 的b口輸出out dx, alwait0:n opnopnopmov ah, 01hint 16h;判定鍵盤上是否有鍵按下,如有就終止程序jnz exit jmp wait0exit:pop dx;復(fù)原中斷向量表中的原有0bh 號(hào)中斷
40、向量pop dsmov ax, 250bhint 21hmov ah, 4chint 21hintproc proc nearmov al, bh ror al,1 mov bh, almov dx, portb;向8255a 的b口寫出數(shù)據(jù),點(diǎn)亮對(duì)應(yīng)ledout dx, almov al, 20h;向8259發(fā)出中斷終止命令out 20h, aliret intproc endp codeendsend start(2)8255a 的a 口與 8個(gè)開關(guān)相連,工作于方式 1下,要求:利用當(dāng)前的開關(guān)狀態(tài)通過 b口掌握l1l8 的亮或滅; a 口的 /stb a選通信號(hào)由按鍵 k 發(fā)出,每按一次
41、k 鍵,讀入當(dāng)前開關(guān)狀態(tài);分析:8255a 的b 口用來掌握 led 的亮滅,可工作在方式 0下; 依據(jù)題意,可以通過查詢方式不斷讀取 8255a 的c口狀態(tài)確定 k 鍵是否按下,也可以利用中斷方式,當(dāng) k 鍵按下時(shí),由 intra ( pc3)向 cpu 申請(qǐng)中斷;當(dāng)判定 k 鍵按下后,讀取8255a 的a口狀態(tài),并通過 b口顯示到 led 上;利用查詢方式實(shí)現(xiàn)時(shí),僅需要給定方式挑選掌握字;利用中斷方式實(shí)現(xiàn)時(shí),除掌握字外仍需設(shè)定intea 為1,答應(yīng) intra 申請(qǐng)中斷;因此, 8255a 的方式掌握字為:10110000b0b0h ;使 i nteapc4 置 1,其掌握字為只供學(xué)習(xí)溝通
42、用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除00001001b ( 09h ); 留意:利用中斷方式實(shí)現(xiàn)時(shí)仍需要置pc7為0,使 intra 能到達(dá) 8259的irq3硬件連接與參考源程序:(1) 利用查詢方式實(shí)現(xiàn)硬件連接:1) 8255a 的a 口pa0pa7 與k1k8 對(duì)應(yīng)相連;2) 8255a 的b口pb0pb7與l1l8 對(duì)應(yīng)相連;3) 按鍵 k接 8255a 的c口pc4;參考源程序:codesegment assume cs:codestart:mov al, 0b0h; 8255a 初始化,方式掌握字10110000bmov dx, 20bh out dx, almov dx,
43、209h;led 初始化mov al, 00h out dx, alagain:mov ah, 01h;判定運(yùn)算機(jī)鍵盤上是否有鍵按下,如有終止程序int 16hjnz exitmov dx, 20ah;讀入 8255a 的c口狀態(tài)in al, dxtest al, 00010000b;判定 pc4=1 ? k 鍵是否按下 jnz againmov dx, 208h;讀入 8255a 的a 口狀態(tài)in al, dxmov dx, 209h;將a 口狀態(tài)送 8255a 的b口out dx, aljmp againexit:mov ah, 4chint 21hcodeends end start(2
44、) 利用中斷方式實(shí)現(xiàn)硬件連接:1) 8255a 的a 口pa0pa7 與k1k8 對(duì)應(yīng)相連;2) 8255a 的b口pb0pb7與l1l8 對(duì)應(yīng)相連;3) 按鍵 k接 8255a 的c口pc4;4) 8255a 的c口pc3( intra )接irq ;參考源程序:只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除datasegmentporta dw 208h; 8255a 的a 口地址portb dw 209h; 8255a 的b口地址portc dw 20ah; 8255a 的c口地址dataport_ctr dw 20bh ends; 8255a 的掌握口地址stack1segme
45、nt stackdb 100 dup0 stack1endscodesegmentassume cs:code, ds:data, es:data, ss:stack1 start:mov ax, datamov ds, axmov es, axmov dx, port_ctr;寫入 8255a 方式掌握字 0b0hmov al, 0b0hout dx, almov al, 09h out dx, al;寫入 c口按位置位掌握字,pc4置“ 1”mov al, 0eh;寫入 c口按位復(fù)位掌握字,pc7置“ 0” ,開irqout dx, almov ax, 350bh;儲(chǔ)存系統(tǒng)原有中斷號(hào)為0b
46、h 的中斷向量到堆棧int 21hpush espush bxmov ax, seg intprocmov ds, ax;向0bh 號(hào)中斷寫入新的中斷向量mov dx, offset intprocmov ax, 250bhint 21hin al, 21hand al, 0f7h;答應(yīng) 8259 的irq3 中斷out 21h, alsti;答應(yīng) cpu 響應(yīng)可屏蔽中斷wait0:mov ah, 01h;判定是否有鍵按下,如有就終止程序,如無就等待int 16hjz wait0pop dx;復(fù)原系統(tǒng)中斷向量表只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除pop dsmov ax, 2
47、50bh int 21hmov ah, 4ch int 21hintproc proc nearmov dx, porta;讀入 8255a 端口a 的狀態(tài)(開關(guān)狀態(tài)) in al, dxmov dx, portb;從8255a 的b口輸出開關(guān)狀態(tài),由對(duì)應(yīng)的led 顯示out dx, almov al, 20h;給8259發(fā)中斷終止指令out 20h, aliretintproc endpcodeends end start只供學(xué)習(xí)溝通用此文檔來源于網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系網(wǎng)站刪除試驗(yàn)九: led 顯示器接口試驗(yàn)(1)編制一個(gè)從左到右循環(huán)顯示字符“ 8的”程序, 要求每個(gè)字位的停留時(shí)間約為1s,當(dāng)從標(biāo)準(zhǔn)鍵盤上按下任意鍵時(shí)終止程序;分析: 依據(jù)題意要求, 試驗(yàn)板上的 6位8段數(shù)碼管的段選信號(hào)均相同, 為字符“8”的段碼( 80h );為了實(shí)現(xiàn)從左到右循環(huán)顯示且每個(gè)字位停留約1s的功能,只需要每隔一秒給位選信號(hào)賦值, 選通 /斷開相應(yīng)的位即可;當(dāng)循環(huán)顯示到最右端時(shí),延時(shí)1s再從最左端開頭顯示;為此,在該題中我們利用8255a 的a 口作為 6位led 顯示器的段選口 (地址 208h ),8255a 的b口作為 6位led 顯示器的位選口(地址209h); 8255a 的掌握字為:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人才租賃行業(yè)相關(guān)項(xiàng)目經(jīng)營(yíng)管理報(bào)告
- 手機(jī)指環(huán)扣產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 破碎錘項(xiàng)目營(yíng)銷計(jì)劃書
- 5G智能旅游行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 色帶卷軸細(xì)分市場(chǎng)深度研究報(bào)告
- 玻璃球瓶容器市場(chǎng)分析及投資價(jià)值研究報(bào)告
- 錄像帶出租行業(yè)經(jīng)營(yíng)分析報(bào)告
- 圓號(hào)產(chǎn)品供應(yīng)鏈分析
- 手持式真空吸塵器產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 繡花紡織品制手鐲首飾項(xiàng)目營(yíng)銷計(jì)劃書
- abaqus-鋁合金A357切削加工有限元模擬
- 四川省教師考核工作登記表(空白)
- 魯教版六年級(jí)數(shù)學(xué)上冊(cè)最新期中試題及答案
- 中醫(yī)院重點(diǎn)??平ㄔO(shè)整改措施
- 旋挖技術(shù)交底(共2頁)
- 2022年上海特種設(shè)備作業(yè)安全管理人員考試題庫匯總(含真題和典型題)
- 校園安全組織結(jié)構(gòu)圖
- 固定翼單座輕型飛機(jī)圖紙
- 一級(jí)直線倒立擺系統(tǒng)模糊控制器設(shè)計(jì)---實(shí)驗(yàn)指導(dǎo)書
- 梁縱筋水平最小錨固長(zhǎng)度不足與固接條件的處理的設(shè)計(jì)優(yōu)化
- 大壩基礎(chǔ)面處理施工方案
評(píng)論
0/150
提交評(píng)論