计算机控制实验程序-学生

  • 格式:doc
  • 大小:289.50 KB
  • 文档页数:21

计算机控制技术实验程序集河南大学计算机与信息工程学院STACK SEGMENT STACKDW 256 DUP(?) STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,17HOUT 42H,ALAGAIN: CALL DELAYIN AL,60HOUT 00H,ALPUSH AXMOV AX,0001HINT 10HPOP AXCALL DISPLAYJMP AGAINDELAY: PUSH CXMOV CX,3000H DEL1: PUSH AXPOP AXLOOP DEL1POP CXRET DISPLAY: MOV CL,04HMOV DL,ALSHR AL,CLCMP AL,09HJBE DIS1ADD AL,07H DIS1: ADD AL,30HMOV AH,01HINT 10HAND DL,0FHCMP DL,09HJBE DIS2ADD DL,07H DIS2: ADD DL,30HMOV AL,DLMOV AH,01HINT 10HRETCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,17HOUT 42H,ALMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXCLIIN AL,21HAND AL,7FHOUT 21H,ALMOV AL,00HOUT 61H,ALMOV BL,40HMOV AL,06HOUT 61H,ALMOV CH,06HAGAIN: STIHLTJMP AGAIN IRQ7: PUSH AXIN AL,60HOUT 00H,ALMOV AL,BLOUT 61H,ALCALL DELAYMOV AL,00HOUT 61H,ALMOV AL,CHCMP AL,06HJZ CYMOV BL,40HMOV AL,06HOUT 61H,ALMOV CH,06HJMP CY1CY: MOV BL,80HMOV AL,07HOUT 61H,ALMOV CH,07HCY1: MOV AL,20HOUT 20H,ALPOP AXIRETDELAY: PUSH CXMOV CX,0010H DEL1: LOOP DEL1POP CXRETDELAY2: PUSH CXMOV CX,0068H DEL2: LOOP DEL2POP CXRETCODE ENDSEND STARTDW 256 DUP(?) STACK ENDS DATA SEGMENT TK DB(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX PUSH DS MOV AL,90H OUT 63H,AL MOV AL,0A4H OUT 43H,AL MOV AL,2EH OUT 42H,AL MOV AX,0000H MOV DS,AX MOV AX,2000H+OFFSET IRQ7 MOV SI,003CH MOV [SI],AX MOV AX,0000H MOV SI,003EH MOV [SI],AX POP DS CLI IN AL,21H AND AL,7FH OUT 21H,AL MOV BL,TK AGAIN: STI HLT JMP AGAINIRQ7: DEC BL JNZ CLEAR_DA IN AL,60H OUT 00H,AL MOV BL,TK FINISH: MOV AL,20H OUT 20H,AL IRET CLEAR_DA: MOV AL,80H OUT 00H,AL JMP FINISH CODE ENDS END STARTDW 256 DUP(?) STACK ENDSDATA SEGMENTTK DB(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXPUSH DSMOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,2EHOUT 42H,ALMOV AX,0000HMOV DS,AXMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,2000H+OFFSET IRQ6MOV SI,0038HMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXMOV SI,003AHMOV [SI],AXPOP DSCLIIN AL,21HAND AL,3FHOUT 21H,ALMOV AL,80HOUT 00H,ALMOV BL,01HAGAIN: STIHLTJMP AGAIN IRQ7: DEC BLJNZ FINISHIN AL,60HOUT 00H,ALMOV BL,TK FINISH: MOV AL,20HOUT 20H,ALIRETIRQ6: CALL DELAYMOV AL,80HOUT 00H,ALMOV BL,01HJMP FINISHDELAY: PUSH CXMOV CX,1000H DEL1: PUSH AXPOP AXLOOP DEL1POP CXRETCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?)STACK ENDSDATA SEGMENTTK DB 20HCC DB 95NCC DW (?)a DB 05Na DW (?)aYk DW 0000HXk DW (?)MARK DB 01HDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXPUSH DSMOV AX,0000MOV DS,AXMOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,17HOUT 42H,ALMOV AX,2000H+OFFSET IRQ6MOV SI,0038HMOV [SI],AXMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXMOV SI,003AHMOV [SI],AXMOV aYk,AXMOV MARK,ALPOP DSCLIIN AL,21HAND AL,3FHOUT 21H,ALMOV SI,OFFSET CCMOV CL,02HCALL DATACHANGEMOV BL,01HMOV AL,80HOUT 00H,ALAGAIN: STIHLTJMP AGAINDATACHANGE:AND AL,ALMOV DX,0000HMOV BL,0FHMOV AL,[SI] GOON: ADD AL,ALDAARCL DX,0001HDEC BLJNZ GOONINC SIMOV [SI],DXINC SIINC SIDEC CLJNZ DATACHANGERETIRQ7: DEC BLJNZ FINISHIN AL,60HSUB AL,80HMOV AH,ALMOV AL,00HMOV DX,NCCMOV Xk,AXIMUL DXMOV AL,MARKCMP AL,00HJZ WFMOV AX,aYkADD DX,AXMOV AL,DHADD AL,80HOUT 00H,ALMOV AX,NaIMUL DXFIN: MOV aYk,DXMOV BL,TK FINISH: MOV AL,20HOUT 20H,ALIRETWF: MOV AX,aYkAND AL,ALSBB DX,AXMOV AL,DHADD AL,80HOUT 00H,ALMOV AX,XkMOV DX,NaIMUL DXJMP FIN IRQ6: CALL DELAYMOV AL,80HOUT 00H,ALMOV BL,01HJMP FINISHDELAY: PUSH CXMOV CX,1000H DEL1: PUSH AXPOP AXLOOP DEL1POP CXRETCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?)STACK ENDSDATA SEGMENTTK DB 02HA1 DB 10DBA1 DW (?)A2 DB 20DBA2 DW (?)A3 DB 30DBA3 DW (?)A4 DB 40DBA4 DW (?)A2Xk DW (?)A3Xk_1 DW (?)A4Xk_2 DW (?)ALLADD DW (?)Xk DB (?)XXk DB (?)Xk_1 DB (?)Xk_2 DB (?)MARK DB 00HDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXPUSH DSMOV AX,0000HMOV DS,AXMOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,17HOUT 42H,ALMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,2000H+OFFSET IRQ6MOV SI,0038HMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXMOV SI,003AHMOV [SI],AXNOPNOPNOPMOV Xk,ALMOV Xk_1,ALMOV ALLADD,AXMOV MARK,ALPOP DSCLIIN AL,21HAND AL,3FHOUT 21H,ALMOV SI,OFFSET A1MOV CL,04HCALL DATACHANGEMOV BL,01HMOV AL,80HOUT 00H,ALAGAIN: STIHLTJMP AGAINIRQ7: DEC BLJNZ FINISHIN AL,60HSUB AL,80HMOV Xk,ALMOV AH,ALMOV AL,00HMOV DX,BA1IMUL DXMOV AX,ALLADDADD DX,AXMOV AL,DHADD AL,80HOUT 00H,ALMOV AL,Xk_1MOV Xk_2,ALMOV AL,XXkMOV Xk_1,ALMOV AL,XkMOV XXk,ALMOV AH,XXkMOV AL,00HMOV DX,BA2IMUL DXMOV A2Xk,DXMOV AH,Xk_1MOV AL,00HMOV DX,BA3IMUL DXMOV A3Xk_1,DXMOV AH,Xk_2MOV AL,00HMOV DX,BA4IMUL DXMOV A4Xk_2,DXMOV AL,MARKCMP AL,00HJZ WFPHMOV AX,A2XkADD DX,AXMOV AX,A3Xk_1DD DX,AXFIN: MOV ALLADD,DXMOV BL,TK FINISH: MOV AL,20HOUT 20H,ALIRETWFPH: MOV DX,A2XkMOV AX,A3Xk_1AND AL,ALSBB DX,AXMOV AX,A4Xk_2AND AL,ALSBB DX,AXJMP FIN DATACHANGE:AND AL,ALMOV DX,0000HMOV BL,0FHMOV AL,[SI] GOON: ADD AL,ALDAARCL DX,0001HDEC BLJNZ GOONINC SIMOV [SI],DXINC SIINC SIDEC CLJNZ DATACHANGERETIRQ6: CALL DELAYMOV AL,80HOUT 00H,ALMOV BL,01HJMP FINISHDELAY: PUSH CXMOV CX,1000H DEL1: PUSH AXPOP AXLOOP DEL1POP CXRETCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?) STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,80HOUT 00H,ALHLTJMP STARTCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?)STACK ENDSDATA EGMENTTK DB 01HA1 DB 10HBA1 DW (?)A2 DB 20HBA2 DW (?)A3 DB 30HBA3 DW (?)A4 DB 40HBA4 DW (?)A2Xk DW (?)A3Xk_1 DW (?)A4Xk_2 DW (?)ALLADD DW (?)Xk DB (?)XXk DB (?)Xk_1 DB (?)Xk_2 DB (?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXPUSH DSMOV AX,0000HMOV DS,AXMOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,17HOUT 42H,ALMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXMOV XK,ALMOV XK_1,ALMOV ALLADD,AXPOP DSCLIIN AL,21HAND AL,7FHOUT 21H,ALMOV SI,OFFSET A1MOV CL,04HCALL DATACHANGEMOV AL,80HOUT 00H,ALMOV BL,01H AGAIN: STIHLTJMP AGAINDATACHANGE:AND AL,ALMOV DX,0000HMOV BL,10HMOV AL,[SI]GOON: ADD AL,ALDAARCL DX,0001HDEC BLJNZ GOONINC SIMOV [SI],DXINC SIINC SIDEC CLJNZ DATACHANGERETIRQ7: DEC BLJNZ FINISHIN AL,60HSUB AL,80HMOV Xk,ALMOV AH,ALMOV AL,00HMOV DX,BA1CALL MLMOV AX,ALLADDADD DX,AXMOV AL,DHADD AL,80HOUT 00H,ALMOV AL,Xk_1MOV Xk_2,ALMOV AL,XXkMOV Xk_1,ALMOV AL,XkMOV XXk,ALMOV AH,XXkMOV AL,00HMOV DX,BA2CALL MLMOV A2Xk,DXMOV AH,Xk_1MOV AL,00HMOV DX,BA3CALL MLMOV A3Xk_1,DXMOV AH,Xk_2MOV AL,00HMOV DX,BA4CALL MLMOV A4Xk_2,DXMOV AX,A2XkADD DX,AXMOV AX,A3Xk_1ADD DX,AXFIN: MOV ALLADD,DXMOV BL,TK FINISH: MOV AL,20HOUT 20H,ALIRET ML: CMP DX,7FFFHJA ML1IMUL DXRETML1: PUSH BXPUSH CXPUSH AXSUB DX,7FFFHIMUL DXMOV BX,DXMOV CX,AXPOP AXMOV DX,7FFFHIMUL DXADD AX,CXADC DX,BXPOP CXPOP BXRETCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?) STACK ENDSDATA SEGMENTTK DB 02HCC DB 20HNCC DW (?)a DB 80HBa DW (?)aYk DW 0000HXk DW (?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXPUSH DSMOV AX,0000HMOV DS,AXMOV aYK,AXMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXMOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,17HOUT 42H,ALPOP DSCLIIN AL,21HAND AL,7FHOUT 21H,ALMOV SI,OFFSET CCMOV CL,02HCALL DATACHANGEMOV BL,01HMOV AL,80HOUT 00H,ALAGAIN: STIHLTJMP AGAINDATACHANGE:AND AL,ALMOV DX,0000HMOV BL,10HMOV AL,[SI]GOON: ADD AL,ALDAARCL DX,0001HDEC BLJNZ GOONINC SIMOV [SI],DXINC SIINC SIDEC CLJNZ DATACHANGERETIRQ7: DEC BLJNZ FINISHIN AL,60HSUB AL,80HMOV AH,ALMOV AL,00HMOV DX,NCCMOV Xk,AXCALL MLMOV AX,aYkADD DX,AXMOV AL,DHADD AL,80HOUT 00H,ALMOV AX,BaXCHG DX,AXCALL ML FIN: MOV aYk,DXMOV BL,TK FINISH: MOV AL,20HOUT 20H,ALIRET ML: CMP DX,7FFFHJA ML1IMUL DXRETML1: PUSH BXPUSH CXPUSH AXSUB DX,7FFFHIMUL DXMOV BX,DXMOV CX,AXPOP AXMOV DX,7FFFHIMUL DXADD AX,CXADC DX,BXPOP CXPOP BXRETCODE ENDSEND STARTSTACK SEGMENT STACKDW 256 DUP(?) STACK ENDSDATA SEGMENTTK DB 05HEI DB 40HKP DB 00H, 24H, 43HKI DB 00H, 04H, 96HKD DB 00H, 42H, 40HEKB DB 00HEKK DW 0000HKPP DW 0000HKII DW 0000HKDD DW 0000HPEIE DW 0000HDE1 DW 0000HDE2 DW 0000HIE DW 0000HOUTPUT DW 0000HBA1 DW 1999HALLK DW (?)Xk DW (?)XXk DW (?)Xk_1 DW (?)Xk_2 DW (?)XK_3 DW (?)ZZ DB 04HDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXPUSH DSXOR AX, AXMOV DS, AXMOV AX, 2000H+OFFSET IRQ7MOV SI, 003CHMOV [SI], AXMOV AX, 2000H+OFFSET IRQ6MOV SI, 0038HMOV [SI], AXMOV AX, 0000HMOV SI, 003EHMOV [SI], AXMOV SI, 003AHMOV [SI], AXCLIPOP DSMOV AL, 90HOUT 63H, ALMOV AL, 0A4HOUT 43H, ALMOV AL, 2EHOUT 42H, ALIN AL, 21HAND AL, 3FHOUT 21H, ALMOV SI, OFFSET KD+2MOV BH, 03HMOV DI, OFFSET KDD+1CALL CHANGEMOV AL, 80HOUT 00H, ALMOV BL, 01H AGAIN: STI HLTJMP AGAINIRQ6: MOV AL, 80H OUT 00H, ALMOV AL, 00HOUT 61H, ALMOV AX , 0000HMOV DE2, AXMOV IE, AXMOV BL, 01HMOV AL, 20HOUT 20H, ALIRETIRQ7: CALL CYDEC BLJNZ FINISHCALL LVBO MOV CL, 03H SAR DX, CL MOV EKK, DX MOV AX, DX MOV DX, KPP CALL ML MOV PEIE, DX MOV DX, KDD MOV AX, EKK CALL ML MOV DE1, DX MOV AL, EKB MOV BL, 00H SUB AL, BL JG L1 NEG AL JMP L1 FINISH: MOV AL, 20H OUT 20H, AL IRET L1: MOV DL, EI SUB AL, DL JG DD6 MOV DX, KII MOV AX, EKK CALL ML MOV AX, IE ADD DX, AX MOV IE, DX TEST DH, 80H JZ DD1 MOV AX, 0F000H AND AL, AL SBB DX, AX JG DD2 MOV DX, 0F000H JMP DD4 DD1: MOV AX, 0FFFH AND AL, AL SBB DX, AX JG DD3 DD2: MOV DX, IE JMP DD5 DD3: MOV DX, 0FFFH DD4: MOV IE, DX DD5: MOV AX, PEIE ADD DX, AX MOV PEIE, DX DD6: MOV AX, DE2 MOV DX, DE1 MOV DE2, DX AND AL, AL SBB DX, AX MOV AX, PEIE ADD DX, AX CALL OUT_PUT MOV BL, TK JMP FINISH ML: CMP DX, 7FFFH JA ML1 IMUL DX RET ML1: PUSH BX PUSH CX PUSH AX SUB DX, 7FFFH IMUL DX MOV BX, DX MOV CX, AX POP AX MOV DX, 7FFFH IMUL DX ADD AX, CX ADC DX, BX POP CX POP BX RET CY: IN AL, 60H SUB AL, 80H MOV EKB, AL MOV SI, OFFSET XK_2 MOV DI, OFFSET XK_3 MOV ZZ, 04H Z1: MOV AX, [SI] MOV [DI], AX DEC SIDEC SIDEC DIDEC DIDEC ZZJNZ Z1MOV AX, 0000HMOV AH, EKBMOV XK, AXRETLVBO: MOV AX, 0000HMOV ALLK, AXMOV SI, OFFSET BA1MOV DI, OFFSET XKMOV CX, 0005HLL1: MOV DX, [SI]MOV AX, [DI]INC DIINC DICALL MLADD DX, ALLKMOV ALLK, DXDEC CXJNZ LL1RETOUT_PUT: MOV OUTPUT, DXTEST DH, 80HJZ L7MOV BX, 0F000HSUB DX, BXJG L8MOV DX, 0F000HMOV AL, 80HOUT 61H, ALJMP L9L7: MOV BX, 0FFFHSUB DX, BXJG L10L8: MOV DX, OUTPUTJMP L11L10: MOV DX, 0FFFHMOV AL, 80HOUT 61H, AL L9: MOV OUTPUT, DXL11: MOV CL, 03HSHL DX, CLMOV AL, DHADD AL, 80HOUT 00H, ALL12: RETCHANGE: DEC SIMOV CX, [SI]INC SIAND AL, ALMOV DX, 0000HMOV BL, 10HGO: MOV AL, [SI]ADD AL, ALDAAMOV [SI], ALDEC SIMOV AL, [SI]ADC AL, ALDAARCL DX, 0001HMOV [SI], ALINC SIDEC BLJNZ GODEC SIMOV [SI], CXDEC SITEST BYTE PTR[SI], 01HJNZ QB1FIN: DEC DIMOV [DI], DXDEC SIDEC DIDEC BHJNZ CHANGERETQB1: NEG DXJMP FINCODE ENDSEND STARTSTACK SEGMENT TACKDW 256 DUP(?) STACK ENDSDATA SEGMENTSAVEBUFF DB 256 DUP(00H)TK DB 64HK0 DB 00H,54H,35HK1 DB 01H,20H,00HK2 DB 00H,20H,00HK3 DB 00H,30H,00HP1 DB 00H,71H,70HP2 DB 00H,70H,30HP3 DB 01H,60H,30H SAVEMARK DB 00HSAVEADDR DB 0FFH CONTROLMARK DB 00HEKB DB 00HK0_16 DB 00H,10H,10HK1_16 DB 00H,20H,00HK2_16 DB 01H,21H,24HK3_16 DB 00H,40H,11HP1_16 DB 00H,12H,20HP2_16 DB 00H,23H,53HP3_16 DB 00H,12H,65HEK DW 0001HEKK DW 0002HEK_1 DW 0001HEK_2 DW 0002HUK DW 0002HUKK DW 0003HUK_1 DW 0003HUK_2 DW 0003HOUTPUT DW 0123HALLK_ALLP DW 0321HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXPUSH DSXOR AX,AXMOV DS,AXMOV AX,2000H+OFFSET IRQ7MOV SI,003CHMOV [SI],AXMOV AX,2000H+OFFSET IRQ6MOV SI,0038HMOV [SI],AXMOV AX,0000HMOV SI,003EHMOV [SI],AXMOV SI,003AHMOV [SI],AXCLIPOP DSMOV AL,90HOUT 63H,ALMOV AL,0A4HOUT 43H,ALMOV AL,2EHOUT 42H,ALIN AL,21HAND AL,3FHOUT 21H,ALMOV SI,OFFSET P3+2MOV BH,07HMOV DI,OFFSET P3_16+2CALL CHANGECALL CLEAR_EMOV AL,80HOUT 00H,ALMOV BL,01HMOV SAVEMARK,00HMOV SAVEADDR,0FFHAGAIN: STIHLTJMP AGAINIRQ6: MOV AL,80HOUT 00H,ALMOV AL,10HOUT 61H,ALMOV CONTROLMARK,AL MOV SAVEMARK,ALCALL CLEAR_EMOV BL,01HMOV AL,20HOUT 20H,ALIRETIRQ7: MOV AL,01HMOV CONTROLMARK,ALDEC BLJNZ FINISHCALL CYMOV EK,DXMOV AX,DXMOV DI,OFFSET K0_16INC DIMOV DX,[DI]CALL MLMOV AX,ALLK_ALLPADD DX,AXCALL OUT_PUTMOV DX,OUTPUTMOV UK,DXMOV SI,OFFSET UK_1MOV DI,OFFSET UK_2MOV BL,07HL1: MOV AX,[SI]MOV [DI],AXDEC SIDEC SIDEC DIDEC DIDEC BLJNZ L1MOV AX,0000HMOV ALLK_ALLP,AXMOV SI,OFFSET K1_16MOV DI,OFFSET EKKMOV CX,0003HCALL L2MOV SI,OFFSET P1_16MOV DI,OFFSET UKKMOV CX,0103HCALL L2 MOV BL,TKFINISH: MOV AL,20HOUT 20H,ALIRETL2: INC SIMOV DX,[SI]MOV AX,[DI]CALL MLDEC SITEST BYTE PTR[SI],01HJNZ QBLL: INC SIINC SIINC SIINC DIINC DIMOV AX,ALLK_ALLP CMP CH,00HJNZ L3ADD DX,AXL4: MOV ALLK_ALLP,DXDEC CLJNZ L2RETL3: XCHG DX,AXSUB DX,AXJMP L4QB: NEG DXJMP LLML: CMP DX,7FFFHJA ML1IMUL DXRETML1: PUSH BXPUSH CXPUSH AXSUB DX,7FFFHIMUL DXMOV BX,DXMOV CX,AXPOP AXMOV DX,7FFFHIMUL DXADD AX,CXADC DX,BXPOP CXPOP BXRETCY: IN AL,60HSUB AL,80HMOV EKB,ALCALL SAVEEKMOV DX,0000HMOV DH,ALMOV CL,03HSAR DX,CLRETSAVEEK: MOV AH,ALMOV DX,OFFSET SAVEBUFFMOV AL,CONTROLMARKCMP AL,00HJZ L5MOV AL,SAVEMARKCMP AL,01HJZ L5MOV AL,SAVEADDRCMP AL,0FEHJZ L6INC ALMOV DL,ALMOV SAVEADDR,ALPUSH DIMOV DI,DXMOV [DI],AHPOP DIL5: MOV AL,AHRETL6: INC SAVEMARKJMP L5OUT_PUT: MOV OUTPUT,DXTEST DH,80HJZ L7MOV BX,0F000HSUB DX,BXJG L8MOV DX,0F000HMOV AL,80HOUT 61H,ALJMP L9L7: MOV BX,0FFFHSUB DX,BXJG L10L8: MOV DX,OUTPUTJMP L11L10: MOV DX,0FFFHMOV AL,80HOUT 61H,ALL9: MOV OUTPUT,DXL11: MOV CL,03HMOV AL,CONTROLMARKCMP AL,00HJZ L12SHL DX,CLMOV AL,DHADD AL,80HOUT 00H,ALL12: RETCHANGE: DEC SIMOV CX,[SI]INC SIAND AL,ALMOV DX,0000HMOV BL,10HGO: MOV AL,[SI]ADD AL,ALDAAMOV [SI],ALDEC SIMOV AL,[SI]ADC AL,ALDAARCL DX,0001HMOV [SI],ALINC SIDEC BL最小拍控制系统实验程序 5-1JNZ GODEC SIMOV [SI],CXDEC SIMOV AL,[SI]DEC DIMOV [DI],DXDEC SIDEC DIMOV [DI],ALDEC DIDEC BHJNZ CHANGERETCLEAR_E: MOV AX,0000HMOV ALLK_ALLP,AXMOV SI,OFFSET EKMOV BL,08HGOON: MOV [SI],AXINC SIINC SIDEC BLJNZ GOONRETDELAY: PUSH CXMOV CX,1000HDEL1: PUSH AXPOP AXLOOP DEL1POP CXRETCODE ENDSEND START第20页。