1、第三部分 接口技术实验第三部分 接口技术实验实验一【实验内容】利用DOS系统功能调用,从键盘输入一串字符,分别统计字母、数字和其他字符的个数,并输出显示统计结果, 编写出实现这一功能的汇编源程序。解:程序如下: DATA SEGMENT MAXSTRING DB 100 INACT DB ? STRING DB 100 DISMESS DB PLEASE ENTER A STRING:, 0AH, 0DH,$ DIGITAL DB DIGITAL IS:, $ LETTER DB LETTER IS:, $ OTHERCHAR DB OTHER IS:, $CRLF DB 0AH, 0DH,
2、$DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATAMAIN PROC FAR MOV AX, DATA MOV DS, AX MOV BL, 0 MOV BH, 0 MOV CH, 0DISPSTRING MACRO MOV AH, 9 INT 21H ENDMDISPCHAR MACRO MOV AH, 2 INT 21H ENDM LEA DX, DISMESS DISPSTRINGBEGIN: LEA DX, MAXSTRING MOV AH, 0AH INT 21H MOV DL, INACT MOV DH, 0 INC DX LEA SI
3、, STRINGREPEAT: DEC DX JZ ENDCHE MOV AL, SI INC SI CMP AL, 0 JB OTHER CMP AL, 9 JA NEXT1 INC BL JMP REPEAT NEXT1: OR AL, 20H CMP AL, a JB OTHER CMP AL, z JA OTHER INC BH JMP REPEATOTHER: INC CH JMP REPEATENDCHE: LEA DX, DIGITAL DISPSTRING MOV CL, BL CALL DISP LEA DX, LETTER DISPSTRING MOV CL, BH CAL
4、L DISP LEA DX, OTHERCHAR DISPSTRING MOV CL, CH CALL DISP MOV AH, 4CH INT 21H MAIN ENDP DISP PROC NEAR MOV AL, CL MOV AH, 0 MOV CL, 100 DIV CL MOV CL, AH MOV DL, AL ADD DL, 30H DISPCHAR MOV AL, CL MOV AH, 0 MOV CL, 10 DIV CL MOV CL, AH MOV DL, ALADD DL, 30HDISPCHARMOV DL, CL ADD DL, 30HDISPCHARLEA DX
5、, CRLFDISPSTRINGRET DISPENDP CODEENDSEND MAIN实验二【实验内容】把地址偏移量为100H单元开始的256个单元分别写入数据00H,01H,02H,03H,FFH,并用DOS功能调用显示各单元的内容。为了显示清晰明了,要求每行显示16个数据,两个数据之间用空格分开,编写出实现这一功能的汇编源程序。解:程序如下: DATA SEGMENT ORG 100H BUF1 DB 256 DUP(?) COUNT EQU $-BUF1 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DAT
6、A MOV DS, AX MOV SI, OFFSET BUF1 MOV CX, COUNT PUSH SI PUSH CX XOR AL, AL NEXT: MOV SI, AL INC AL INC SI LOOP NEXT POP CX POP SI ZRBH: MOV BH,16 NEXT1: MOV AL,SI MOV BL, AL SHR AL, 1 SHR AL, 1 SHR AL, 1 SHR AL, 1 CMP AL, 0AH JC JIA30 ADD AL, 7 JIA30: ADD AL, 30H CALL DISP MOV AL, BL AND AL, 0FH CMP
7、AL, 0AH JC JIA30A ADD AL, 7 JIA30A: ADD AL, 30H CALL DISP MOV AL, 20H CALL DISP INC SI LOOP NEXT2 JMP STOP NEXT2: DEC BH JNZ NEXT1 MOV AL, 0AH CALL DISP MOV AL, 0DH CALL DISP JMP ZRBH DISPPROC NEAR MOV DL, ALMOV AH, 2 INT 21H RET DISPENDP STOP:MOV AH, 4CH INT 21H CODEENDS END START实验三 (8253)【实验内容】以1
8、MHz的信号为时钟信号,利用8253产生一个周期为1ms的方波。解:程序如下: CODE SEGMENT MAIN PROC FAR ASSUME CS: CODE START: CLI MOV DX, 303H MOV AL, 36HOUT DX, ALMOV DX, 300HMOV AL, 0E8HOUT DX, ALMOV AL, 03HOUT DX, ALMOV DX, 303HMOV AL, 74HOUT DX, ALMOV DX, 301HMOV AL, 0AHOUT DX, ALMOV AL, 00HOUT DX, ALSTIMOV AH, 4CHINT 21HMAIN ENDP
9、 CODE ENDS END START 实验四(8255)【实验内容】读入开关量到8255A,再将其通过指示灯显示。以8255A的A口作输入,B口作输出,输入用开关,输出用发光二极管,要求当输入不全为0时,输入与输出保持一致。当输入为全0时,发光二极管闪烁。解:程序如下: PORTA=308H PORTB=309H CONTROL=30BH DCONS=10HDATA SEGMENTMESS DB 0DH, 0AH, PRESS ANYKEY TO EXIT, 0AH, 0DH,$ DATA ENDS CG SEGMENT CODE ASSUME CS: CG, DS: DATA BEGIN
10、: PUSH DS XOR AX, AX PUSH AX MOV AX, DATAMOV DS, AXMOV DX, OFFSET MESS MOV AH, 9INT 21H MOV DX, CONTROL MOV AL, 90H OUT DX, AL MOV AH, 0FFH MOV BL, 0 LP: PUSH AX MOV AH, 0BH INT 21H CMP AL, 0 JNE BACKPOP AXMOV DX, PORTAIN AL, DXNOPNOPTEST AL, AHJZ SHIFTMOV DX, PORTBOUT DX, AL JMP LP SHIFT: MOV AL, B
11、LMOV DX, PORTBOUT DX, ALCALL DELAYSHL BL, 1TEST BL, AHJNZ LPMOV BL, 1JMP LP BACK: POP AX RETF DELAY PROC NEAR PUSH AX MOV BH, DCONS DDLY: MOV CX, 0 DELAY1: DEC CXLOOP DELAY1DEC BHTEST BH, AHJNZ DDLYPOP AXDELAY ENDPCG ENDSEND BEGIN实验五(8259A)【实验内容】要求使用8259A的IRQ0,用单脉冲信号模拟外部中断信号,使中断程序在屏幕上显示信息,在中断程序中,要求依
12、次显示az这26个字母。STACK SEGMENT STACK DB 200 DUP(0)STACK ENDSC8259 EQU 20HCODE SEGMENT CODEMAIN PROC FAR ASSUME CS:CODE, SS:STACKSTART: XOR AX, AXMOV DS, AX LEA AX, IRQ0 MOV DS: 20H, AX MOV DX, C8259 MOV AL, 00010011B OUT DX, AL INC DX MOV AL, 00001000B OUT DX, AL MOV AL, 00001101B OUT DX, AL MOV AL, 1111
13、1110BOUT DX,AL MOV AL, 20H OUT 20H, ALMOV BL, aMOV AL, BLMOV AH, 1INT 14HSTIJMP $IRQ0: CLIINC BL CMP BL, JNZ NEXT MOV AH,4CH INT 21HNEXT: MOV AL,BL MOV AH,1INT 14H MOV AL, 20HOUT 20H, ALSTIIRETMAIN ENDPCODE ENDS ENDSTART实验六 (8250)【实验内容】两台微机之间按RS232C标准协议使用COM1进行串行通信,构成一个字符或数据的各位按时间先后,从低位到高位一位一位地传送。解:
14、程序如下: STACK SEGMENT PARA STACK STACK DB 256 DUP(0) STACK ENDS CODE SEGMENT PARA PUBLIC CODE START PROC FAR ASSUME CS: CODE PUSH DS MOV AX, 0 PUSH AX MOV DX, 3FBH MOV AL, 80H OUT DX, AL MOV DX, 3F8H MOV AL, 12OUT DX, AL INC DX MOV AL, 0OUT DX, ALMOV DX, 3FBHMOV AL, 0AHOUT DX, ALMOV DX, 3FCHMOV AL, 03
15、HOUT DX, ALMOV DX, 3F9HMOV AL, 0OUT DX, ALFOREVER: MOV DX, 3FDH IN AL, DX TEST AL, 1EHJNZ ERROR TEST AL, 01H JNZ RECEIVETEST AL, 20HJZ FOREVERMOV AH, 1INT 16HJZ FOREVERMOV AH, 0INT 16HMOV DX, 3F8HOUT DX, ALMOV AH, 2MOV DL, ALINT 21HCMP AL, 27JNZ NEXTMOV AH, 4CHINT 21H NEXT: JMP FOREVER RECEIVE: MOV
16、DX, 3F8H IN AL, DX AND AL, 7FH CMP AL, 27JNZ DISPMOV AH, 4CH INT 21HDISP: PUSH AX MOV BX,0MOV AH, 14INT 10HPOP AXCMP AL, 0DHJNZ FOREVERMOV AL, 0AHMOV BX, 0MOV AH, 14INT 10HJMP FOREVERERROR: MOV DX, 3F8H IN AL, DX MOV AL,? MOV BX, 0 MOV AH, 14 INT 10H JMP FOREVERSTART ENDPCODE ENDS END START实验七(A/D及D/A)【实验内容】如果要在PC/XT机上采用ADC0809设计一块8通道的数据采集卡,要求以200Hz的速率对每个通道均采集1024个数据,也就是每隔5ms对各通道轮流采集一个数据,然后将它们存到数据段中以DBUF为始址的数据缓冲区中。数据存放的次序须与通道号一致,即从通道0开始,先依次存入每个通道的第一个数据,再存入各通道的第二个数据,直到各通道都存满1024个数据为止。分析:可以选用8253芯片来产生定时脉冲,控制采样率。假设加到8253的CLK0的时钟脉冲的频率为1MHz,编程使通道0工作于方式2,由于采样率fS=200Hz,当选
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1