微型计算机原理及接口技术a试验_第1页
微型计算机原理及接口技术a试验_第2页
微型计算机原理及接口技术a试验_第3页
微型计算机原理及接口技术a试验_第4页
微型计算机原理及接口技术a试验_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论