DISX MACRO X MOV DL X MOV AH

  • Slides: 46
Download presentation

实验一 求最大值程序 六、实验程序 DISX MACRO X MOV DL, X MOV AH, 02 INT 21

实验一 求最大值程序 六、实验程序 DISX MACRO X MOV DL, X MOV AH, 02 INT 21 H ENDM STACK SEGMENT STA DB 512 DUP(? ) TOP EQU LENGTH STACK ENDS DATA SEGMENT BUF DB 'MAX NUMBER: ', 0 DH, 0 AH, '$' DATA 1 DB 35 H, 07 H, 0 ABH, 56 H, 12 H DB 98 H, 0 CDH, 76 H, 0 FAH, 0 BFH BLOCK DB 10 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK START: MOV AX, STACK MOV SS, AX MOV SP, TOP MOV AX, DATA MOV DS, AX MOV DX, OFFSET BUF MOV AH, 09 INT 21 H MOV SI, OFFSET BLOCK MOV CX, [SI] DEC CX MOV SI, OFFSET DATA 1 MOV AL, [SI] MAX 1: INC SI CMP AL, [SI] JA NEXT MOV AL, [SI];AL中定义为最大值

实验一 NEXT: MAX 2: LOOP MOV SHR CMP JA ADD DISX MOV AND CMP

实验一 NEXT: MAX 2: LOOP MOV SHR CMP JA ADD DISX MOV AND CMP JA ADD MAX 1 BL, AL CL, 04 AL, CL AL, 09 MAX 4 AL, 30 H AL AL, BL AL, 0 FH AL, 09 MAX 5 AL, 30 H 求最大值程序 MAX 3: MAX 4: MAX 5: CODE DISX MOV INT ADD JMP ENDS END AL AH, 4 CH 21 H AL, 37 H MAX 2 AL, 37 H MAX 3 START

实验二 两个多位十进制数相加的程序 四. 实验程序 DISX DATA MESS DATA 1 DATA 2 DATA 3 DATA

实验二 两个多位十进制数相加的程序 四. 实验程序 DISX DATA MESS DATA 1 DATA 2 DATA 3 DATA STACK STA TOP STACK MACRO X MOV DL, X MOV AH, 02 H INT 21 H ENDM SEGMENT DB 'TWO MULBIT DECIMAL NUMBERS ADD', 0 DH, 0 AH DB 0 DH, 0 AH, '$' DB 33 H, 39 H, 31 H, 37 H, 34 H DB 36 H, 35 H, 30 H, 38 H, 32 H DB 6 DUP(? ) ENDS SEGMENT DB 20 DUP(? ) EQU LENGTH STA ENDS

实验二 两个多位十进制数相加的程序 CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK, ES: DATA START:

实验二 两个多位十进制数相加的程序 CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK, ES: DATA START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV AX, TOP MOV SP, AX MOV DX, OFFSET MESS MOV AH, 09 H INT 21 H MOV SI, OFFSET DATA 1 MOV BX, 05 CALL DISPL DISX 2 BH MOV SI, OFFSET DATA 2 MOV BX, 05 CALL DISPL MOV SI, OFFSET DATA 1 MOV DI, OFFSET DATA 2 CALL ADDA DISX 3 DH MOV SI, OFFSET DATA 3 MOV BX, 05 CALL DISPL DISX 0 DH DISX 0 AH MOV AH, 4 CH INT 21 H DISPL DS 1: DISPL PROC DISX DEC JNZ RET ENDP NEAR [SI+BX-1] BX DS 1

实验二 两个多位十进制数相加的程序 ADDA AD 1: AD 2: PROC MOV MOV SUB DEC JNZ MOV

实验二 两个多位十进制数相加的程序 ADDA AD 1: AD 2: PROC MOV MOV SUB DEC JNZ MOV CLC MOV MOV ADC AAA MOV NEAR DX, SI BP, DI BX, 05 BYTE PTR [SI+BX-1], 30 H BYTE PTR [DI+BX-1], 30 H BX AD 1 CX, 05 BX, OFFSET DATA 3 AL, [SI] AH, [DI] AL, AH [BX], AL INC AD 3: ADDA CODE INC LOOP MOV ADD DEC JNZ RET ENDP ENDS END SI DI BX AD 2 SI, OFFSET DATA 3 BX, 05 BYTE PTR [SI+BX-1], 30 H BX AD 3 START

实验三 二进制数与十进制数相互转换 的程序 三、�� 程序 1、十� 制��� 二 � 制数 DISX CRLF MACRO MOV

实验三 二进制数与十进制数相互转换 的程序 三、�� 程序 1、十� 制��� 二 � 制数 DISX CRLF MACRO MOV INT ENDM X AH, 02 DL, X 21 H MACRO DISX 0 DH DISX 0 AH ENDM STACK STA TOP STACK DATA BUF MES 1 MES 2 MES 3 DATA SEGMENT DB 512 DUP (? ) EQU LENGTH STA ENDS SEGMENT DB 6 DB ? DB 6 DUP (? ) DB 'INPUT DECIMALIST NUMBER: ', '$' DB 'OUTPUT: ', '$' DB 'INPUT ERROR!', '$' ENDS

实验三 二进制数与十进制数相互转换 的程序 CODE SEGMENT ASSUME CS: CODE, DS: DATA, ES: DATA, SS: STACK

实验三 二进制数与十进制数相互转换 的程序 CODE SEGMENT ASSUME CS: CODE, DS: DATA, ES: DATA, SS: STACK START: MOV AX, DATA MOV DS, AX MOV ES, AX MOV AX, STACK MOV SS, AX MOV SP, TOP MOV DX, OFFSET MES 1 MOV AH, 09 H INT 21 H MOV DX, OFFSET BUF MOV AH, 0 AH INT 21 H CRLF MOV SI, OFFSET BUF MOV CL, [SI+1] XOR CH, CH XOR AX, AX CLC SFE 1: MOV BX, 10 MUL BX ; (AX)*(CX)=DX: AX CMP DX, 0 JNE ERRO MOV DL, [SI+2] CMP DL, 30 H JB ERRO CMP DL, 39 H JA ERRO AND DL, 0 FH XOR DH, DH ADD AX, DX JC ERRO INC SI LOOP SFE 1

实验三 二进制数与十进制数相互转换 的程序 ERRO: SFE 2: PUSH MOV INT POP CALL JMP CRLF MOV

实验三 二进制数与十进制数相互转换 的程序 ERRO: SFE 2: PUSH MOV INT POP CALL JMP CRLF MOV INT AX DX, OFFSET MES 2 AH, 09 H 21 H AX DISUP SFE 2 DX, OFFSET MES 3 AH, 09 H 21 H AH, 4 CH 21 H DISUP: MOV CH, 02 H MOV BX, AX DISUP 1: MOV AL, BH MOV CL, 04 SHR AL, CL CMP AL, 09 JA DISUP 4 ADD AL, 30 H DISUP 2: DISX AL MOV AL, BH AND AL, 0 FH CMP AL, 09 JA DISUP 5 ADD AL, 30 H DISUP 3: DISX AL DEC CH JNZ DISUP 6 DISX 48 H RET

实验三 二进制数与十进制数相互转换 的程序 DISUP 4: ADD JMP DISUP 5: ADD JMP DISUP 6: MOV

实验三 二进制数与十进制数相互转换 的程序 DISUP 4: ADD JMP DISUP 5: ADD JMP DISUP 6: MOV JMP CODE ENDS END AL, 37 H DISUP 2 AL, 37 H DISUP 3 BH, BL DISUP 1 START 2、二进制转换为十进制 程序同学� 自己� 写

实验四 8259中断控制系统 五、实验程序 CODE SEGMENT ASSUME CS: CODE, DS: CODE, ES: CODE ORG 3400

实验四 8259中断控制系统 五、实验程序 CODE SEGMENT ASSUME CS: CODE, DS: CODE, ES: CODE ORG 3400 H H 8: JMP P 8259 ZXK EQU 0 FFDCH ZWK EQU 0 FFDDH LED DB 0 C 0 H, 0 F 9 H, 0 A 4 H, 0 B 0 H, 99 H, 92 H, 82 H, 0 F 8 H, 80 H, 90 H DB 88 H, 83 H, 0 C 6 H, 0 A 1 H, 86 H, 8 EH, 0 FFH, 0 CH, 0 DEH, 0 F 3 H BUF DB ? , ? , ? , ? Port 0 EQU 0 FFE 0 H Port 1 EQU 0 FFE 1 H

实验四 8259中断控制系统 P 8259: CLI CALL WP ; 初始化显示“P. ” MOV AX, OFFSET INT

实验四 8259中断控制系统 P 8259: CLI CALL WP ; 初始化显示“P. ” MOV AX, OFFSET INT 8259 MOV BX, 003 CH MOV [BX], AX MOV BX, 003 EH MOV AX, 0000 H MOV [BX], AX CALL FOR 8259 MOV SI, 0000 h STI CON 8: CALL DIS JMP CON 8 FOR 8259: MOV AL, 13 H MOV DX, Port 0 OUT DX, AL MOV AL, 08 H MOV DX, Port 1 OUT DX, AL MOV AL, 09 H OUT DX, AL MOV AL, 7 FH OUT DX, AL RET ; IRQ 7

实验四 8259中断控制系统 INT 8259: cli MOV BX, OFFSET BUF MOV BYTE PTR [BX+SI], 07

实验四 8259中断控制系统 INT 8259: cli MOV BX, OFFSET BUF MOV BYTE PTR [BX+SI], 07 H INC SI CMP SI, 0007 H JZ X 59 XX 59: MOV AL, 20 H MOV DX, Port 0 OUT DX, AL mov cx, 0050 h xxx 59: push cx call dis pop cx loop xxx 59 pop cx mov cx, 3438 h push cx STI IRET X 59: MOV SI, 0000 H CALL WP JMP XX 59 WP: MOV BUF, 11 H 化显示“P. ” MOV BUF+1, 10 H MOV BUF+2, 10 H MOV BUF+3, 10 H MOV BUF+4, 10 H MOV BUF+5, 10 H RET ; 初始

实验四 8259中断控制系统 DIS: MOV CL, 20 H MOV BX, OFFSET BUF DIS 1: MOV

实验四 8259中断控制系统 DIS: MOV CL, 20 H MOV BX, OFFSET BUF DIS 1: MOV AL, [BX] PUSH BX MOV BX, OFFSET LED XLAT POP BX MOV DX, ZXK OUT DX, AL MOV AL, CL MOV DX, ZWK OUT DX, AL PUSH CX MOV CX, 0100 H DELAY: LOOP $ POP CX CMP CL, 01 H JZ EXIT INC BX SHR CL, 1 JMP DIS 1 EXIT: MOV AL, 00 H MOV DX, ZWK OUT DX, AL RET ; -------------CODE ENDS END H 8

实验五 8255并行接口 五、实验程序 CODE SEGMENT ASSUME CS: CODE, DS: CODE, ES: CODE ORG 32

实验五 8255并行接口 五、实验程序 CODE SEGMENT ASSUME CS: CODE, DS: CODE, ES: CODE ORG 32 E 0 H PA EQU 0 FFD 8 H PB EQU 0 FFD 9 H PC EQU 0 FFDAH PCTL EQU 0 FFDBH H 2: MOV DX, PCTL MOV AL, 90 H OUT DX, AL P 2: MOV DX, PA IN AL, DX INC DX OUT DX, AL JMP P 2 CODE ENDS END H 2

实验六 8253定时计数器 五、实验程序 CODE SEGMENT ASSUME CS: CODE, DS: CODE, ES: CODE ORG 3490

实验六 8253定时计数器 五、实验程序 CODE SEGMENT ASSUME CS: CODE, DS: CODE, ES: CODE ORG 3490 H H 9: MOV DX, 0 FFE 3 H MOV AL, 36 H OUT DX, AL MOV DX, 0 FFE 0 H MOV AL, 00 H OUT DX, AL MOV AL, 10 H OUT DX, AL JMP $ CODE ENDS END H 9

实验七 串口通信实验 五.实验程序 STACK SEGMENT DB 26 DUP(? ) STACK ENDS CODE SEGMENT START

实验七 串口通信实验 五.实验程序 STACK SEGMENT DB 26 DUP(? ) STACK ENDS CODE SEGMENT START PROC FAR ASSUME CS: CODE PUSH DS MOV AX, 0 PUSH AX MOV DX, 3 FBH MOV AL, 80 H OUT DX, AL MOV DX, 3 F 8 H MOV AL, 0 CH OUT DX, AL INC DX MOV AL, 0 OUT DX, AL MOV DX, 3 FBH MOV AL, 00001010 B OUT DX, AL INC DX MOV AL, 00000011 B OUT DX, AL MOV DX, 3 F 9 H MOV AL, 0 OUT DX, AL RDSTS: MOV DX, 3 FDH IN AL, DX TEST AL, 1 EH JNZ ERROR TEST AL, 01 H JNZ RECV TEST AL, 20 H JZ RDSTS TRXT: MOV AH, 1 INT 16 H JZ RDSTS MOV AH, 0 INT 16 H MOV DX, 3 F 8 H OUT DX, AL JMP RDSTS

实验七 串口通信实验 RECV: MOV DX, 3 F 8 H IN AL, DX AND AL,

实验七 串口通信实验 RECV: MOV DX, 3 F 8 H IN AL, DX AND AL, 7 FH PUSH AX MOV BX, 0 MOV AH, 14 INT 10 H POP AX CMP AL, 0 DH JNZ RDSTS MOV AL, 0 AH MOV BX, 0 MOV AH, 14 INT 10 H JMP RDSTS ERROR: MOV DX, 3 F 8 H IN AL, DX MOV AL, "? " MOV AH, 14 MOV BX, 0 INT 10 H JMP RDSTS START ENDP CODE ENDS END START