




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/wanghan146Page | 微型計算機原理及接口技術A試驗參考匯編程序試驗01A將FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,0FFFFH MOV BX,AX MOV CX,AX MOV DX,AX MOV SI,AX MOV DI,AX MOV BP,AX;= RETSTART ENDPCODE ENDSEND STT試驗01B將FFH送到內存1000H,1001H,1002H,1003H,1004H單
2、元中程序如下:DATA SEGMENTORG 1000HH1 DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AL,0FFH MOV DI,1000H MOV CX,5 ;循環5次LP1:MOV DI,AL ;FF放入1000H-1004H中 INC DI DEC CX JNZ LP1;= RETSTART ENDPCODE ENDSEND STT試驗02A編寫 一個加法程序,在數據段偏移地址1000H處開始,存放有兩個3字節長的數據(
3、高位對應高地址,低位對應低地址),求這兩數據(十六進制數)的和,并將結 果放在兩數據之后,利用DEBUG調試程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=?程序如下:DATA SEGMENTORG 1000HH1 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;=MOV SI,1000H;不帶最高位進位的全加器 MOV DI,1003H MOV BX,1006H MOV CX,3 CLCAA: MOV AL,SI
4、SUB AL,DI MOV BX,ALPUSHF;保護FR,這里其實沒有必要,因為INC不會產生進位 INC SI INC DI INC BX POPF LOOP AA MOV DL,0 ;最高位進位 ADC DL,0 MOV DI,1009H MOV DI,DL;= RETSTART ENDPCODE ENDSEND STT試驗02B用串傳送指令把A程序的數據塊(被加數、加數、和)偏移地址1000H開始的區域傳遞到同一數據段的偏移地址為1010H開始的區域,并利用DEBUG查看運行結果程序如下:DATA SEGMENTORG 1000HH1 DB 20 DUP(?)DATA ENDSCODE
5、 SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DS ;使ES段地址與DS相同 MOV ES,AXMOV SI,1000H;不帶最高位進位的全加器 MOV DI,1003H MOV BX,1006H MOV CX,3 CLCAA: MOV AL,SI ADC AL,DI MOV BX,ALPUSHF;保護FR,這里其實沒有必要,因為INC不會產生進位 INC SI INC DI INC BX POPF LOOP AA MOV DL,0 ;最高位進位 ADC DL,0 MOV D
6、I,1009H MOV DI,DL MOV SI,1008H ;串傳送 MOV DI,100EH MOV CX,5 STD REP MOVSW ;一次傳送一個字;= RETSTART ENDPCODE ENDSEND STT試驗02C,選作編寫一個兩位十進制數加法程序,當從鍵盤上輸入:n1n2+n3n4則在CRT上顯示n1n2+n3n4=n5n6程序如下:DATA SEGMENTH1 DB The addends all must be two figures, insufficient adds 0 in front.,13,10,$DATA ENDSCODE SEGMENTASSUME C
7、S:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX LEA DX,H1 ;打印注釋:加數和被加數都必須為兩位數,不夠的前面補0 MOV AH,09H INT 21H SUB CX,CX ;CX清零 SUB DX,DX ;DX清零 CLC ;清CF MOV AH,1 ;輸入第1個數 INT 21H MOV CH,AL ;放入CH SUB CH,30H ;ASCII碼調整 INT 21H ;輸入第2個數 MOV CL,AL ;放入CL SUB CL,30H ;ASCII碼調整 MOV A
8、H,2 ;打印加號 MOV DL,2BH INT 21H MOV AH,1 ;輸入第3個數 INT 21H MOV DH,AL ;放入DH SUB DH,30H ;ASCII碼調整 INT 21H ;輸入第4個數 MOV DL,AL ;放入DL SUB DL,30H ;ASCII碼調整 ADD CL,DL ;ASCII碼個位加法 CMP CL,10;比較個位數結果是否大于10 JNC AA ;大于等于10則跳至AA ADD CH,DH;個位不向十位進位的十位加法 JMP BBAA: ADD CH,DH ;個位向十位有進位的十位加法 ADD CH,1 SUB CL,10BB: MOV DL,3D
9、H ;打印等號 MOV AH,2 INT 21H CMP CH,10 ;比較十位數結果是否大于10 JNC CC MOV DL,0 ;打印十位不向百位進位的百位=0 INT 21H JMP CCCCC: MOV DL,31H ;打印十位向百位進位的百位=1 INT 21H SUB CH,10CCC:ADD CH,30H ;ASCII碼調整 MOV DL,CH ;打印結果中的十位 INT 21H ADD CL,30H ;ASCII碼調整 MOV DL,CL ;打印結果中的個位 INT 21H MOV AH,1 ;暫停 INT 21H;= RETSTART ENDPCODE ENDSEND STT
10、試驗03A在數據段偏移地址0100H處開始,存放0-9的平方值(構成一個表格),任給一個自然數M在0110H單元中(0=M=9),查表求出M的平方值,并將結果放入0111H單元。程序如下:DATA SEGMENTORG 0100HH1 DB 00,01,04,09,16,25,36,49,64,81ORG 0110HH2 DB 7,?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX MOV SI,OFFSET H2 MOV
11、AL,SI MOV BX,OFFSET H1 XLAT INC SI MOV SI,AL;= RETSTART ENDPCODE ENDSEND STT試驗03B從內存1000H開始,建立19個自然遞增然后又遞減的數據串(0-9-0),用DEBUG查看運行結果。程序如下:DATA SEGMENTORG 1000HH1 DB 20 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV SI,OFFSET H1 MOV DI,OFFSET H1 ADD D
12、I,12H MOV AL,0 MOV CX,10AA: MOV SI,AL MOV DI,AL INC SI DEC DI INC AL LOOP AA ;= RETSTART ENDPCODE ENDSEND STT試驗03C,選作在數據段偏移地址1000H處,安排部分七段LED顯示碼表,要求從鍵盤上任給一個0F中的數,然后再屏幕上顯示出其對應的碼值。七段共陰極LED顯示碼表見實驗冊P14。程序如下:DATA SEGMENTORG 1000HH1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HH2 DB 1
13、 DUP(?)TIP DB 13,10,The input number must be a HEX (0F), press to quit.,13,10,$ERR DB 13,10,The input number must be a HEX (0F).,13,10,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX LEA DX,TIP ;打印TIP信息 MOV AH,09H INT 21H BEGIN: MOV DL,
14、13 ;打印換行 MOV AH,2 INT 21H MOV DL,10 ;打印回行首 INT 21H MOV AH,1 ;等待從鍵盤輸入 INT 21H MOV SI,OFFSET H2 ;保護輸入 MOV SI,AL CMP AL,27 ;如果按下鍵,跳至QUIT JZ QUIT CALL DISPLAY0 ;調用DISPLAY0子程序 CALL ASCII2HEX ;調用ASCII2HEX子程序 CMP AL,0FFH ;如果AL不等于FF(出錯碼)則跳至CORRECT JNZ CORRECT LEA DX,ERR ;打印錯誤信息 MOV AH,09H INT 21H JMP FINISH
15、 ;跳至FINISH CORRECT: MOV BX,OFFSET H1 ;查表 XLAT MOV AH,0 MOV BX,0 MOV BL,AL ;分離AL的高4位和低4位,分離后AL中為高4位,BL中為低4位 AND AL,0F0H MOV CL,4 SHR AL,CL AND BL,0FH CALL HEX2ASCII ;調用HEX2ASCII CALL DISPLAY ;調用DISPLAY子程序 MOV AL,BL CALL HEX2ASCII CALL DISPLAY MOV DL,72 ;打印字母H MOV AH,2 INT 21H JMP FINISHQUIT:CALL ESCA
16、PE ;調用ESCAPE子程序FINISH: JMP BEGIN;= RETSTART ENDPASCII2HEX PROC NEAR CMP AL,30H ;ASCII轉16進制子程序 JB ERROR ;如果AL0則跳至ERROR CMP AL,39H JBE NUMBER ;如果ALF則跳至ERROR SUB AL,07HNUMBER: SUB AL,30H JMP DONEERROR: MOV AL,0FFHDONE: RETASCII2HEX ENDPHEX2ASCII PROC NEAR CLC ;16進制轉ASCII子程序 DAA ADD AL,0F0H ADC AL,40H R
17、ETHEX2ASCII ENDPDISPLAY PROC NEAR PUSH DX ;顯示結果子程序 MOV DL,AL MOV AH,2 INT 21H POP DX RETDISPLAY ENDPDISPLAY0 PROC NEAR PUSH AX ;該子程序打印輸入及: PUSH DX PUSHF MOV DL,13 MOV AH,2 INT 21H MOV DL,10 INT 21H MOV DL,SI ;打印輸入 INT 21H MOV DL,58 ;打印: INT 21H POPF POP DX POP AX RETDISPLAY0 ENDPESCAPE PROC NEAR MOV
18、 AH,4CH ;返回操作系統子程序 INT 21H RETESCAPE ENDPCODE ENDSEND STT試驗04A把BX中的“1”的個數放到AL中,并在屏幕上顯示“1”的個數。程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= CLC MOV AX,0 MOV DX,0 MOV BX,000FH MOV CX,16 CHECK: SHL BX,1 ADC DL,0 CMP DL,1 JZ COUNTCONTINUE: LOOP CHECK JMP FINISHCOUNT: ADD A
19、L,1 DAA CLC MOV DX,0 JMP CONTINUE FINISH: MOV AH,0 MOV BX,0 MOV BL,AL ;分離AL的高4位和低4位,分離后AL中為高4位,BL中為低4位 AND AL,0F0H MOV CL,4 SHR AL,CL AND BL,0FH CALL HEX2ASCII ;調用HEX2ASCII CALL DISPLAY ;調用DISPLAY子程序 MOV AL,BL CALL HEX2ASCII CALL DISPLAY ;= RETSTART ENDPHEX2ASCII PROC NEAR CLC ;16進制轉ASCII子程序 DAA ADD
20、 AL,0F0H ADC AL,40H RETHEX2ASCII ENDPDISPLAY PROC NEAR PUSH DX ;顯示結果子程序 MOV DL,AL MOV AH,2 INT 21H POP DX RETDISPLAY ENDPCODE ENDSEND STT試驗04B,選作編寫程序在CRT上顯示圖形(圖形見實驗冊P17)。程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV BL,14H MOV BH,1 MOV CX,0AHLP: PUSH BX CALL SPACE
21、CALL STAR CALL CRLF POP BX DEC BL ADD BH,2 LOOP LP;= RETSTART ENDPSPACE PROC NEAR;打印空格子程序 PUSH CX MOV CX,0 MOV AH,2 MOV DL,32 MOV CL,BLLP1:INT 21H LOOP LP1 POP CX RETSPACE ENDPSTAR PROC NEAR;打印*子程序 PUSH CX MOV CX,0 MOV DL,2AH MOV AH,2 MOV CL,BHLP2:INT 21H LOOP LP2 POP CX RETSTAR ENDPCRLF PROC NEAR;回
22、車換行子程序 MOV DL,13 MOV AH,2 INT 21H MOV DL,10 INT 21H RETCRLF ENDPCODE ENDSEND STT試驗04C,選作自動生成1至99BCD數并送屏幕顯示,顯示格式見實驗冊P19。程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV BL,16 MOV AL,0 CALL PRINT CALL CRLF;= RETSTART ENDPPRINT PROC NEAR;打印數字子程序 MOV AH,2 MOV DH,1 MOV CX,
23、10 MOV BH,30H LP2:PUSH CX MOV CX,10 MOV BL,30H LP0:CMP BH,30H JZ AA JMP BBAA: CMP BL,30H JZ CONBB: MOV DL,BH INT 21H MOV DL,BL INT 21H CALL SPACECON:INC BL LOOP LP0 INC BH POP CX LOOP LP2 RETPRINT ENDPSPACE PROC NEAR;打印空格子程序 PUSH CX MOV CX,0 MOV AH,2 MOV DL,32 MOV CL,2LP1:INT 21H LOOP LP1 INC DH CMP
24、 DH,17 JZ KK JMP LLKK: CALL CRLF MOV DH,1 LL: POP CX RETSPACE ENDPCRLF PROC NEAR;回車換行子程序 MOV DL,13 MOV AH,2 INT 21H MOV DL,10 INT 21H RETCRLF ENDPCODE ENDSEND STT試驗05A從首地址為BUF開始存放10個數(單字節無符號數),從這些數種找出最大值,存入MAX中,并顯示到屏幕上。程序如下:DATA SEGMENTORG 1000HBUF DB 1H,2H,3H,4H,9H,5H,6H,0EH,8H,7HORG 1020HMAX DB 1
25、DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX CALL CHAMAX CALL HEX2ASCII MOV DL,AL MOV AH,2 INT 21H;= RETSTART ENDPCHAMAX PROC NEAR MOV SI,OFFSET BUF MOV AL,SI MOV CX,9 INC SIF0: CMP AL,SI JGE F1 MOV AL,SIF1: INC SI LOOP F0 MOV D
26、I,OFFSET MAX MOV DI,AL RETCHAMAX ENDPHEX2ASCII PROC NEAR CLC ;16進制轉ASCII子程序 DAA ADD AL,0F0H ADC AL,40H RETHEX2ASCII ENDPCODE ENDSEND STT試驗05B在BUF開始存放10個字節的帶符號數組,分別統計正數、負數、零的個數,存放在數組的后面。程序如下:DATA SEGMENTORG 1000HBUF DW 1,2,3,0,-4,-5,-6,-7,-8,-9EZ DB 0HLZ DB 0HT1 DB ZHENG SHU, LING, FU SHU:,13,10,$DAT
27、A ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX CLC MOV AX,0 MOV BX,0 MOV SI,OFFSET BUF MOV CX,10CHECK: MOV AX,SI CMP AX,0 JZ EQALZERO SHL AX,1 ADC BL,0 CMP BL,1 JZ LESSZEROCONTINUE: ADD SI,2 CLC MOV BL,0 LOOP CHECK JMP FINISHEQALZERO: MOV
28、DI,OFFSET EZ MOV DL,DI INC DL MOV DI,DL JMP CONTINUELESSZERO: MOV DI,OFFSET LZ MOV DL,DI INC DL MOV DI,DL JMP CONTINUEFINISH: MOV BL,10 MOV DI,OFFSET EZ MOV AL,DI SUB BL,AL MOV DI,OFFSET LZ MOV AL,DI SUB BL,AL MOV AL,BL PUSH DX PUSH AX LEA DX,T1 MOV AH,09H INT 21H POP AX POP DX CALL HEX2ASCII CALL D
29、ISPLAY MOV DI,OFFSET EZ MOV AL,DI CALL HEX2ASCII CALL DISPLAY MOV DI,OFFSET LZ MOV AL,DI CALL HEX2ASCII CALL DISPLAY ;= RETSTART ENDPHEX2ASCII PROC NEAR CLC ;16進制轉ASCII子程序 DAA ADD AL,0F0H ADC AL,40H RETHEX2ASCII ENDPDISPLAY PROC NEAR PUSH DX MOV DL,AL MOV AH,2 INT 21H MOV DL,2CH MOV AH,2 INT 21H POP
30、 DX RETDISPLAY ENDPCODE ENDSEND STT試驗05CBUF開始存放10個16位有符號數(字),將其中的負數抹掉,把正數連續地重新存放在BUF數組之后。程序如下:DATA SEGMENTORG 1000HBUF DW 1,2,3,0,-4,-5,-6,-7,-8,-9GZ DW 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX CLC MOV AX,0 MOV BX,0 MOV S
31、I,OFFSET BUF MOV DI,OFFSET GZ MOV CX,10CHECK: MOV AX,SI MOV DX,AX CMP AX,0 JZ LESSZERO SHL AX,1 ADC BL,0 CMP BL,1 JZ LESSZERO MOV DI,DX ADD DI,2CONTINUE: ADD SI,2 CLC MOV BL,0 LOOP CHECK JMP FINISHLESSZERO: MOV WORD PTR SI,0H JMP CONTINUEFINISH:;= RETSTART ENDPCODE ENDSEND STT試驗06,軟件綜合設計模擬溫度測量軟件設計,具
32、體要求見實驗冊P22。程序如下:DATA SEGMENTORG 1000HTEMP DB 128,127,122,128,128,128,127,128,129,129,128,128,129,128,128,128ORG 1010HAVER DB 10 DUP(?)ORG 1020HBCD1 DB 10 DUP(?)ORG 1030HBCD2 DB 10 DUP(?)ORG 1040HXLATED DB 10 DUP(?)ORG 1060HLEDA DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8E
33、H,7FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 CALL Z1 CALL Z2 CALL Z3 CALL Z4 CALL Z5;= RETSTART ENDPZ1 PROC NEAR;將首地址為1000H開始存放的16個單字節數組取平均值后,存放在1010H開始的單元中 MOV SI,OFFSET TEMP CLC MOV CX,15 MOV
34、 AL,SI LP1:INC SI MOV BL,SI ADD AX,BX ADC DX,0 LOOP LP1 MOV BX,16 DIV BX MOV SI,OFFSET AVER MOV SI,DX ADD SI,2 MOV SI,AX RETZ1 ENDPZ2 PROC NEAR;將存放在1010H開始的數轉換成壓縮的BCD碼,存放在1020H開始的單元中 MOV CX,SI MOV AX,0LP: ADD AL,1 MOV BL,AL DAA CMP BL,9AH JE LP2 JMP LP3LP2:ADD AH,1LP3:LOOP LP MOV SI,OFFSET BCD1 MOV
35、SI,AX RETZ2 ENDPZ3 PROC NEAR;將存放在1020H開始的壓縮BCD碼轉換成非壓縮BCD碼,存放在1030開始的單元中 MOV AX,0 MOV BX,0 MOV SI,OFFSET BCD1 MOV AL,SI MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL AND BL,0FH MOV DI,OFFSET BCD2 MOV DI,BL INC DI MOV DI,AL INC SI MOV AL,SI INC DI MOV DI,AL RETZ3 ENDPZ4 PROC NEAR;將存放在1030H開始的非壓縮BCD碼轉換成七段共陽
36、極LED顯示值,存放在1040H開始的單元中 MOV SI,OFFSET BCD2 MOV AL,SI MOV BX,OFFSET LEDA XLAT MOV DI,OFFSET XLATED MOV DI,AL MOV CX,2LP4:INC SI INC DI MOV AL,SI XLAT MOV DI,AL LOOP LP4 RETZ4 ENDPZ5 PROC NEAR;將存放在1040H開始的全部數據送CRT顯示 MOV AX,0 MOV BX,0 MOV DI,OFFSET XLATED ADD DI,2 MOV CX,3LP5:MOV DL,DI MOV AL,DL CALL DI
37、SPLAY1 DEC DI LOOP LP5 RETZ5 ENDPHEX2ASCII PROC NEAR;16進制ASCII碼子程序 CLC DAA ADD AL,0F0H ADC AL,40H RETHEX2ASCII ENDPDISPLAY PROC NEAR;數據顯示子程序 PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RETDISPLAY ENDPDISPLAY0 PROC NEAR;格式顯示子程序 PUSH DX MOV DL,48H MOV AH,2 INT 21H MOV DL,20H INT 21H POP DX RETDISPLAY0 E
38、NDPDISPLAY1 PROC NEAR;分離高低4位、調用數據顯示子程序、調用格式顯示子程序以完成全部顯示過程子程序 PUSH CX MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL AND BL,0FH CALL HEX2ASCII CALL DISPLAY MOV AL,BL CALL HEX2ASCII CALL DISPLAY CALL DISPLAY0 POP CX RETDISPLAY1 ENDPCODE ENDSEND STT試驗07A試驗電路如P24圖7-1,8255 C口接邏輯電平開關K0K7,A口接LED顯示電路L0L7。將開關K0K7作
39、為輸入開關量從8255 C口輸入,發光二極管L0L7作為輸出開關量從A口輸出。當對應開關閉合時,對應發光二極管“亮”。當按下鍵盤任意鍵時,退出程序。程序如下:DATA SEGMENT;實驗箱驅動默認中斷地址為C000H,此處設置偏移量 ioport equ 0c000h-280h ioport1 equ ioport+288h ioport2 equ ioport+289h ioport3 equ ioport+28ah ioport4 equ ioport+28bhDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUS
40、H DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AXFORMAT: MOV DX,ioport4 MOV AL,89H ;CW=10001001 OUT DX,ALCONTROL:MOV DX,ioport3 IN AL,DX MOV DX,ioport1 OUT DX,AL MOV AH,0BH INT 21H CMP AL,00H JNE EXIT JMP CONTROLEXIT: MOV AH,4CH INT 21H;= RETSTART ENDPCODE ENDSEND STT試驗07C交通燈控制實驗,連接電路,L7、L6、L5作為南北路口的交通
41、燈與PC7、PC6、PC5相連,L2、L1、L0作為東西路口的交通燈與PC2、PC1、PC0相連。編程時六個燈暗交通燈變化規律亮滅:南北路口的綠燈、東西路口的紅燈同時亮30秒左右。南北路口的黃燈閃爍若干次,同時東西路口的紅燈繼續亮。南北路口的紅燈、東西路口的綠燈同時亮30秒左右。南北路口的紅燈繼續亮、同時東西路口的黃燈閃爍若干次。轉(1)重復。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ ioport+288h ioport2 equ ioport+289h ioport3 equ ioport+28ah ioport4 equ io
42、port+28bhDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AXFORMAT: MOV DX,ioport4 MOV AL,80H ;CW=10000000 OUT DX,AL;=CONTROL:;= MOV DX,ioport3 ;(1) MOV AL,00100100B OUT DX,AL MOV CX,3000THIRTY1: CALL DELAY1S LOOP THIRTY1;= MOV CX,5 ;(2)FLAS
43、H1: MOV DX,ioport3 MOV AL,01000100B OUT DX,AL PUSH CX MOV CX,50AAAA: CALL DELAY1S LOOP AAAA POP CX MOV DX,ioport3 MOV AL,00000100B OUT DX,AL PUSH CX MOV CX,50BBB: CALL DELAY1S LOOP BBB POP CX LOOP FLASH1;= MOV DX,ioport3 ;(3) MOV AL,10000001B OUT DX,AL MOV CX,3000THIRTY2: CALL DELAY1S LOOP THIRTY2;=
44、 MOV CX,5 ;(4)FLASH2: MOV DX,ioport3 MOV AL,10000010B OUT DX,AL PUSH CX MOV CX,50CCC: CALL DELAY1S LOOP CCC POP CX MOV DX,ioport3 MOV AL,10000000B OUT DX,AL PUSH CX MOV CX,50DDD: CALL DELAY1S LOOP DDD POP CX LOOP FLASH2;= MOV AH,0BH INT 21H CMP AL,00H JNE EXIT JMP CONTROLEXIT: MOV AH,4CH INT 21H;= R
45、ETSTART ENDPDELAY1S PROC NEAR PUSHF PUSH BX PUSH CX MOV BX,3E8HLP2: MOV CX,0BAHLP1: PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP CX POP BX POPF RETDELAY1S ENDPCODE ENDSEND STT試驗08A按圖連線,將計數器0設置為方式0,計數器初值設為0HFH,用手動逐個輸入單脈沖,編成使計數值在屏幕上顯示,并同時用邏輯筆觀察OUT0點平變化。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ io
46、port+280h ioport2 equ ioport+281h ioport3 equ ioport+283hDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AXFORMAT: MOV DX,ioport3 ;寫控制字,寄存器0,只讀寫低8位,工作方式0,二進制計數 MOV AL,00010000B OUT DX,AL MOV DX,ioport1 ;設置初始計數值,F MOV AL,0FH OUT DX,ALCONTROL
47、:MOV DX,ioport3 ;寫控制字使其所存以便讀當前計數值 MOV AL,00000000B OUT DX,AL MOV DX,ioport1 ;讀當前計數值 IN AL,DX CMP BL,AL ;判斷是否與上次讀入的計數值相同,即是否給了一個新的時鐘脈沖,如果沒有,則跳過顯示程序 JE NEXT MOV BL,AL CALL HEX2ASCII ;調用16進制轉ASCII碼子程序 CALL DISPLAY ;調用顯示子程序NEXT: MOV AH,0BH ;判斷是否有健按下,如有則退出,否則循環 INT 21H CMP AL,00H JNE EXIT JMP CONTROLEXIT
48、: MOV AH,4CH INT 21H;= RETSTART ENDPHEX2ASCII PROC NEAR;16進制轉ASCII碼子程序 CLC DAA ADD AL,0F0H ADC AL,40H RETHEX2ASCII ENDPDISPLAY PROC NEAR;數據顯示子程序 PUSH DX MOV DL,AL MOV AH,2 INT 21H MOV DL,13 INT 21H MOV DL,10 INT 21H POP DX RETDISPLAY ENDPCODE ENDSEND STT試驗08B按圖連線,將計數器0、計數器1分別設置為方式3,計數初值設為1000,用邏輯筆觀察
49、OUT1輸出電平的變化。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ ioport+280h ioport2 equ ioport+281h ioport3 equ ioport+283hDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AXFORMAT: MOV DX,ioport3 ;寫控制字,計數器0,先讀寫低8位,后讀寫高8位,工作方式3,二進制計數 MOV AL
50、,00110110B OUT DX,AL;下面設置計數器0初始計數值,1000D=03E8H,先寫入低8位,接著寫入高8位,也可以直接使用AX=1000,然后OUT DX,AL,MOV AL,AH,OUT DX,AL這樣不用換算 MOV DX,ioport1 MOV AL,0E8H OUT DX,AL MOV AL,03H OUT DX,AL MOV DX,ioport3 ;寫控制字,計數器1,先讀寫低8位,后讀寫高8位,工作方式3,二進制計數 MOV AL,01110110B OUT DX,AL MOV DX,ioport2 ;設置計數器0初始計數值 MOV AL,0E8H OUT DX,A
51、L MOV AL,03H OUT DX,AL MOV AH,4CH ;退出 INT 21H;= RETSTART ENDPCODE ENDSEND STT試驗11A連接電路,DAC0832采用單緩沖方式,具有單雙極性輸入端(Ua,Ub),編程產生鋸齒波。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ ioport+290hDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,A
52、X MOV CL,0CONTROL:MOV DX,ioport1 MOV AL,CL OUT DX,AL ADD CL,20;= MOV AH,0BH INT 21H CMP AL,00H JNE EXIT JMP CONTROLEXIT:MOV AH,4CH INT 21H;= RETSTART ENDPCODE ENDSEND STT試驗11B,選作連接電路,DAC0832采用單緩沖方式,具有單雙極性輸入端(Ua,Ub),編程產生正弦波。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ ioport+290hORG 1000HSIN
53、DB 127,168,205,233,250,253,243,220,187,147,106, 66, 33, 10, 0, 3, 20, 48, 85,126DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AXFORMAT:MOV SI,OFFSET SIN MOV BH,20CONTROL:MOV DX,ioport1 MOV AL,SI OUT DX,AL CALL DELAY1S INC SI DEC BH CMP BH
54、,0 JE FORMAT;= MOV AH,0BH INT 21H CMP AL,00H JNE EXIT JMP CONTROLEXIT:MOV AH,4CH INT 21H;= RETSTART ENDPDELAY1S PROC NEAR;8086延時1S子程序 PUSHF PUSH BX PUSH CX MOV BX,3E8HLP2: MOV CX,0BAHLP1: PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP CX POP BX POPF RETDELAY1S ENDPCODE ENDSEND STT試驗12A連接電路,通過試驗臺電位器RW1輸出05V滯
55、留電壓送入ADC0809通道0(IN0),變成采集IN0輸入的電壓,在屏幕上顯示出轉換后的16進制數據。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ ioport+298h ioport2 equ ioport+299hDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AXCONTROL:MOV DX,ioport1 MOV AL,0FFH OUT DX,AL CALL
56、DELAY1S IN AL,DX MOV AH,0 MOV BX,0 MOV BL,AL ;分離AL的高4位和低4位,分離后AL中為高4位,BL中為低4位 AND AL,0F0H MOV CL,4 SHR AL,CL AND BL,0FH CALL HEX2ASCII ;調用HEX2ASCII CALL DISPLAY ;調用DISPLAY子程序 MOV AL,BL CALL HEX2ASCII CALL DISPLAY MOV DL,48H MOV AH,2 INT 21H MOV DL,20H INT 21H;= MOV AH,0BH INT 21H CMP AL,00H JNE EXIT
57、 JMP CONTROLEXIT:MOV AH,4CH INT 21H;= RETSTART ENDPHEX2ASCII PROC NEAR;16進制轉ASCII碼子程序 CLC DAA ADD AL,0F0H ADC AL,40H RETHEX2ASCII ENDPDISPLAY PROC NEAR;數據顯示子程序 PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RETDISPLAY ENDPDELAY1S PROC NEAR;8086延時1S子程序 PUSHF PUSH BX PUSH CX MOV BX,3E8HLP2: MOV CX,0BAHLP1:
58、 PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP CX POP BX POPF RETDELAY1S ENDPCODE ENDSEND STT試驗12B,選作經JP3的1、2短接,使IN2處于雙極性工作方式,并給IN1輸入一個低頻交流信號(幅度為+/-5V),編程采集這個信號數據并在屏幕上顯示波形。程序如下:DATA SEGMENT ioport equ 0c000h-280h ioport1 equ ioport+298h ioport2 equ ioport+299hDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DS SUB AX,AX PUSH AX;= MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,6 INT 10H MOV BH,0 MOV BL,0 MOV AH,11 INT 10H MOV BH,1 MOV BL,1 MOV AH,11 INT 10H MOV CX,1CONTROL:MOV DX,ioport1 MOV AL,0FFH OUT DX,AL CALL DELAY1S IN AL,DX MOV DL,AL MOV DH,0 MOV AH,12 MOV AL,3 INT 10H ADD CX,20;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畜牧飼料企業服務體系建設與優化考核試卷
- 磷肥產品標準與檢測方法考考核試卷
- 紡織原料的綠色采購與可持續利用考核試卷
- 干部休養所服務質量管理考核試卷
- 天津現代職業技術學院《鋼琴基礎(1)》2023-2024學年第一學期期末試卷
- 上海農林職業技術學院《粵劇藝術賞析》2023-2024學年第二學期期末試卷
- 酒泉職業技術學院《馬克思主義與社會方法論》2023-2024學年第二學期期末試卷
- 南充科技職業學院《西班牙語精讀五》2023-2024學年第一學期期末試卷
- 山西老區職業技術學院《生物醫學傳感檢測系統設計》2023-2024學年第二學期期末試卷
- 新野縣2025年數學三下期末質量檢測試題含解析
- 提升幼兒的語言表達和傾聽技巧
- 病房意外停水應急預案演練
- 醫療安全不良事件課件
- 鋼結構加工制作工藝流程
- 循證護理個案
- T-CRHA 028-2023 成人住院患者靜脈血栓栓塞癥風險評估技術
- 護理查對制度
- 冬季車輛安全駕駛培訓課件
- 【企業并購的動因和績效探究文獻綜述及理論基礎6100字】
- 健康指南腰椎管狹窄如何診斷腰椎管狹窄
- 金屬廢料資源化利用
評論
0/150
提交評論