tong hop assembly 8086

48

Upload: huu-nguyen

Post on 28-Apr-2015

103 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Tong Hop Assembly 8086
Page 2: Tong Hop Assembly 8086
Page 3: Tong Hop Assembly 8086
Page 4: Tong Hop Assembly 8086
Page 5: Tong Hop Assembly 8086
Page 6: Tong Hop Assembly 8086
Page 7: Tong Hop Assembly 8086
Page 8: Tong Hop Assembly 8086
Page 9: Tong Hop Assembly 8086
Page 10: Tong Hop Assembly 8086
Page 11: Tong Hop Assembly 8086
Page 12: Tong Hop Assembly 8086
Page 13: Tong Hop Assembly 8086
Page 14: Tong Hop Assembly 8086
Page 15: Tong Hop Assembly 8086
Page 16: Tong Hop Assembly 8086

; ; Code by Jellydn ; ASM LIB CODE support from 06Tonline.NET ; ; CODE ASM convert qua lai giua tat ca he dem bin,oct,dec,hex ; ; ; Chuong trinh chuyen nhap bin va in bin ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO BIN $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP2 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG BIN MOV AX,BX MOV BX,2 MOV CX,0 SAVE_STACK:

MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP2 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,1 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,31H ; >1 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9

Page 17: Tong Hop Assembly 8086

LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP2 ENDP END MAIN ; ; Chuong trinh chuyen nhap bin va in dec ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO BIN $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP2 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2

INT 21H ; IN SO DA NHAP DUOI DANG DEC MOV AX,BX MOV BX,10 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP2 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,1 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,31H ; >1 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG

Page 18: Tong Hop Assembly 8086

MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP2 ENDP END MAIN ; ; Chuong trinh chuyen nhap bin va in hex ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO BIN $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO

CALL NHAP2 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG HEX MOV AX,BX MOV BX,16 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX CMP DX,9 JG CHU: OR DL,30H ;--> SANG SO JMP INRA CHU: ADD DL,37H INRA: INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP2 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,1 MOV AH,1 NHAP: INT 21H

Page 19: Tong Hop Assembly 8086

CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,31H ; >1 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP2 ENDP END MAIN ; ; Chuong trinh chuyen nhap bin va in oct ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO BIN $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE

MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP2 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG OCT MOV AX,BX MOV BX,8 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP2 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX

Page 20: Tong Hop Assembly 8086

XOR BX,BX MOV CL,1 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,31H ; >1 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP2 ENDP END MAIN ; ; Chuong trinh chuyen nhap dec va in bin ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H

.DATA MSG1 DB 'MOI BAN NHAP 1 SO $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP10 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG BIN MOV AX,SI MOV BX,2 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H

Page 21: Tong Hop Assembly 8086

MAIN ENDP NHAP10 PROC ; DAU RA LA SI, LUU KET QUA VUA NHAP PUSH AX PUSH BX PUSH CX PUSH DX MOV SI,0 MOV DI,10 NHAP: MOV AH,1 INT 21H CMP AL,13 JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG ERR SUB AL,30H ; -> SO 0->9 MOV BL,AL ; LUU TAM AL SANG BL MOV AX,SI MUL DI ; AX=SI*10 ADD AX,BX MOV SI,AX JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H JMP NHAP XUAT: POP DX POP CX POP BX POP AX RET NHAP10 ENDP END MAIN

; ; Chuong trinh chuyen nhap va in dec ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP10 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG DEC MOV AX,SI MOV BX,10 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK

Page 22: Tong Hop Assembly 8086

MOV AH,2 INKQ: POP DX OR DL,30H INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP10 PROC ; DAU RA LA SI, LUU KET QUA VUA NHAP PUSH AX PUSH BX PUSH CX PUSH DX MOV SI,0 MOV DI,10 NHAP: MOV AH,1 INT 21H CMP AL,13 JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG ERR SUB AL,30H ; -> SO 0->9 MOV BL,AL ; LUU TAM AL SANG BL MOV AX,SI MUL DI ; AX=SI*10 ADD AX,BX MOV SI,AX JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H

JMP NHAP XUAT: POP DX POP CX POP BX POP AX RET NHAP10 ENDP END MAIN ; ; Chuong trinh chuyen nhap dec va in hex ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP10 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG HEX

Page 23: Tong Hop Assembly 8086

MOV AX,SI MOV BX,16 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX CMP DL,9; >9 THI SANG XU LY CHU JG CHU OR DL,30H ;--> SANG SO JMP INRA CHU: ADD DL,37H INRA: INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP10 PROC ; DAU RA LA SI, LUU KET QUA VUA NHAP PUSH AX PUSH BX PUSH CX PUSH DX MOV SI,0 MOV DI,10 NHAP: MOV AH,1 INT 21H CMP AL,13 JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG ERR SUB AL,30H ; -> SO 0->9 MOV BL,AL ; LUU TAM AL SANG BL

MOV AX,SI MUL DI ; AX=SI*10 ADD AX,BX MOV SI,AX JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H JMP NHAP XUAT: POP DX POP CX POP BX POP AX RET NHAP10 ENDP END MAIN ; ; Chuong trinh chuyen nhap dec va in oct ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX

Page 24: Tong Hop Assembly 8086

; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP10 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG OCT MOV AX,SI MOV BX,8 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP10 PROC ; DAU RA LA SI, LUU KET QUA VUA NHAP PUSH AX PUSH BX PUSH CX PUSH DX MOV SI,0 MOV DI,10 NHAP:

MOV AH,1 INT 21H CMP AL,13 JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG ERR SUB AL,30H ; -> SO 0->9 MOV BL,AL ; LUU TAM AL SANG BL MOV AX,SI MUL DI ; AX=SI*10 ADD AX,BX MOV SI,AX JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H JMP NHAP XUAT: POP DX POP CX POP BX POP AX RET NHAP10 ENDP END MAIN ; ; Chuong trinh chuyen nhap hex va in bin ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA

Page 25: Tong Hop Assembly 8086

MSG1 DB 'MOI BAN NHAP 1 SO HEX $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP16 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG OCT MOV AX,BX MOV BX,2 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H

MAIN ENDP NHAP16 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,4 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG HEX AND AL,0FH ;DOI RA SO NHI PHAN TIEP: SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP HEX: CMP AL,'A' ; < A JL ERR CMP AL,'F' ; > F JG ERR SUB AL,37H; JMP TIEP XUAT: POP DX

Page 26: Tong Hop Assembly 8086

POP CX POP AX RET NHAP16 ENDP END MAIN ; ; Chuong trinh chuyen nhap hex va in dec ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO HEX $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP16 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG DEC MOV AX,BX MOV BX,10 MOV CX,0

SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP16 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,4 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG HEX AND AL,0FH ;DOI RA SO NHI PHAN TIEP: SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH

Page 27: Tong Hop Assembly 8086

INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP HEX: CMP AL,'A' ; < A JL ERR CMP AL,'F' ; > F JG ERR SUB AL,37H; JMP TIEP XUAT: POP DX POP CX POP AX RET NHAP16 ENDP END MAIN ; ; Chuong trinh chuyen nhap hex va in hex ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO HEX $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1

MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP16 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG HEX MOV AX,BX MOV BX,16 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX CMP DX,9 JG CHU: OR DL,30H ;--> SANG SO JMP INRA CHU: ADD DL,37H INRA: INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP16 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX

Page 28: Tong Hop Assembly 8086

PUSH DX XOR BX,BX MOV CL,4 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG HEX AND AL,0FH ;DOI RA SO NHI PHAN TIEP: SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP HEX: CMP AL,'A' ; < A JL ERR CMP AL,'F' ; > F JG ERR SUB AL,37H; JMP TIEP XUAT: POP DX POP CX POP AX RET NHAP16 ENDP

END MAIN ; ; Chuong trinh chuyen nhap hex va in oct ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO HEX $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP16 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG OCT MOV AX,BX MOV BX,8 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX

Page 29: Tong Hop Assembly 8086

INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP16 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,4 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,39H ; >9 JG HEX AND AL,0FH ;DOI RA SO NHI PHAN TIEP: SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H

MOV AH,1, JMP NHAP HEX: CMP AL,'A' ; < A JL ERR CMP AL,'F' ; > F JG ERR SUB AL,37H; JMP TIEP XUAT: POP DX POP CX POP AX RET NHAP16 ENDP END MAIN ; ; Chuong trinh chuyen nhap oct va in bin ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO OCT $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H

Page 30: Tong Hop Assembly 8086

; NHAP SO CALL NHAP8 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG BIN MOV AX,BX MOV BX,2 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP8 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,3 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,37H ; >7

JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP8 ENDP END MAIN ; ; Chuong trinh chuyen nhap oct va in dec ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO OCT $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX

Page 31: Tong Hop Assembly 8086

; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP8 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG DEC MOV AX,BX MOV BX,10 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX OR DL,30H INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP8 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,3 MOV AH,1 NHAP:

INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,37H ; >7 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP8 ENDP END MAIN ; ; Chuong trinh chuyen nhap oct va in hex ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO OCT $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $'

Page 32: Tong Hop Assembly 8086

.CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP8 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG HEX MOV AX,BX MOV BX,16 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ: POP DX CMP DX,9 JG CHU: OR DL,30H ;--> SANG SO JMP INRA CHU: ADD DL,37H INRA: INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH

INT 21H MAIN ENDP NHAP8 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,3 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,37H ; >7 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX RET NHAP8 ENDP END MAIN

Page 33: Tong Hop Assembly 8086

; ; Chuong trinh chuyen nhap oct va in oct ; ; ENV : EMU8086 ; .MODEL SMALL .STACK 100H .DATA MSG1 DB 'MOI BAN NHAP 1 SO OCT $' MSG2 DB 0AH,0DH,'SO BAN DA NHAP $' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ; HIEN THONG BAO MSG1 MOV AH,9 LEA DX,MSG1 INT 21H ; NHAP SO CALL NHAP8 ; XUAT RA SO DA NHAP ; HIEN THONG BAO MSG2 MOV AH,9 LEA DX,MSG2 INT 21H ; IN SO DA NHAP DUOI DANG OCT MOV AX,BX MOV BX,8 MOV CX,0 SAVE_STACK: MOV DX,0 DIV BX ; AX: THUONG VA DX: SO DU CUA PHEP CHIA [DX:AX] : BX PUSH DX INC CX CMP AX,0 JNE SAVE_STACK MOV AH,2 INKQ:

POP DX OR DL,30H ;--> SANG SO INT 21H LOOP INKQ ; THOAT VE DOS MOV AH,4CH INT 21H MAIN ENDP NHAP8 PROC ; DAU RA LA BX, LUU KET QUA VUA NHAP PUSH AX PUSH CX PUSH DX XOR BX,BX MOV CL,3 MOV AH,1 NHAP: INT 21H CMP AL,13 ; NEU LA ENTER THI THOAT JE XUAT CMP AL,30H ; <0 JL ERR CMP AL,37H ; >7 JG ERR AND AL,0FH ;DOI RA SO NHI PHAN SHL BX,CL OR BL,AL JMP NHAP ERR: ;IN SANG DONG MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV AH,9 LEA DX,MSG1 INT 21H MOV AH,1, JMP NHAP XUAT: POP DX POP CX POP AX

Page 34: Tong Hop Assembly 8086

RET NHAP8 ENDP END MAIN ; - asm2html -

Page 35: Tong Hop Assembly 8086

Bài 1:Lập chương trình nhập vào 2 số kiểu byte,in ra màn hình tích 2 số vừa

nhập

.model tiny

.stack 100h

.data

tb1 db 'nhap a=$'

tb2 13,10,'nhap b=$'

tb3 13,10,'tich 2 so la:$'

so1 db 0

so2 db 0

.code

main proc

Mov ax,@Data

Mov ds,ax

Mov ah,9

;in thong bao nhap so thu 1

Lea dx,tb1

int 21h

nhap1:

mov ah,1

int 21h

cmp al,13 ;so sanh al voi 13

je nhap2 ;neu bang thi nhay den nhap 2

sub al,30h ; chuyen ky tu thanh so

mov dl,al ;cat al vao dl

mov al,so1 ; dua so vua nhap ve kieu byte

mov bl,10 ;gan bl =10

mul bl ;nhan al voi 10

add al,dl ;lay ket qua vua nhan cong voi so vua nhap

mov s01,al ;cat ket qua sau khi doi vao bien so1

jmp nhap1 ;nhay den nhan nhap 1

nhap2:

lea dx,tb2; in thong bao nhap so thu 2

mov ah,9

int 21h

nhap: mov ah,1

int 21h

cmp al,13 ; so sanh so vua nhap voi enter

je tinhtich ;neu bang thi tinh tich

sub al,30h ; chuyen xau vua nhap thanh so

mov dl,al ;cat so vua nhap vao dl

mov al,so2 ;dua so vua nhap ve kieu byte

mov bl,10 ;gan bl=10

mul bl ; lay so ban dau nhan voi 10

add al,dl ;lay ket qua vua nhan cong voi so vua nhap

mov s02,al ;cat ket qua sau khi doi vao bien so2

jmp nhap

tinhtich:

mov al,so1 ;dua so vua nhap ra thanh ghi al

mul so2 ;nhan voi so 2

mov bx,ax ;lay ket qua vua tinh chuyen vao thanh ghi bx

jmp tinhtich

;in tich

mov ah,9 ;hien thong bao in tich

lea dx,tb3

int 21h

mov ax,bx ;chuyen ket qua ra thanh ghi ax

mov bx,10 ;gan bx=10

xor cx,cx ;khoi tao bien dem

chia: xor dx,dx ;xoa bit cao

div bx ;lay ket qua chia cho 10 du dat dx,thuong dat ax

push dx ;day du trong dx vao ngan xep

inc cx ;tang bien dem

cmp ax,0 ;so sanh thuong voi 0

ja chia ;neu lon hon thi chia

mov ah,2 ;lay chuc nang in ky tu ra man hinh

lay: pop dx ;lay du trong stasck khoi dx

add dl,30h ;chuyen so vua nhap sang dang ky tu

int 21h ;thuc hien in ky tu nam trong dl ra man hinh

loop lay

ra: mov ah,4ch

int 21h

Main endp

End main

Page 36: Tong Hop Assembly 8086

Bài 6

Nhập vào 1 mảng 15 ptu kiểu word in ra màn hình mã Hexa tương ứng của số

đó

.model tiny

.stack 100h

.data

tb1 db 'Nhap mang 15 phan tu kieu word: $'

tb2 db 10,13,'Nhap phan tu : $'

tb3 db 10,13,'Phan tu co gia tri lon nhat la: $'

a dw 20 dup(0)

.code

main proc

mov ax,@data

mov ds,ax

;-----------------

lea dx,tb1

mov ah,9

int 21h

mov cx,15 ;Nhap 15 phan tu kieu word

xor si,si

nhapmang:

mov ah,9

lea dx,tb2

int 21h

push cx

nhapso:

mov ah,1

int 21h

cmp al,13

je catkq

sub al,30h

mov cl,al

xor ch,ch

mov bx,10

mov ax,a[si]

mul bx

add ax,cx

mov a[si],ax

jmp nhapso

catkq:

add si,2

pop cx

loop nhapmang

lea dx,tb3

mov ah,9

int 21h

xor si,si

mov ax,a[si]

mov cx,15 ; mov cx,14 add si,2

duyet:

cmp a[si],ax

jbe qua

mov ax,a[si]

qua:

add si,2

loop duyet

;mov ax,a[0]

xor cx,cx

mov bx,10

chia:

xor dx,dx

div bx

push dx

inc cx

cmp ax,0

jne chia

mov ah,2

hienso:

pop dx

add dl,30h

int 21h

loop hienso

;-----------------

mov ah,4ch

int 21h

main endp

end main

Page 37: Tong Hop Assembly 8086

Bài 5

Lập chương trình nhập vào 1 số kiêu word in ra màn hình mã Hexa tương ứng

của số đó

.model tiny

.stack 100h

.data

st1 db 'nhap so kieu word:$'

st2 db 13,10,'so do duoi dang hecxa:$'

a dw 0

.code

main proc

;

mov ax,@data

mov ds,ax

;

lea dx,st1

mov ah,9

int 21h

nhap:

mov ah,1

int 21h

cmp al,13

je inso

mov ah,0

sub al,30h

mov cx,ax

mov ax,a

mov bx,10

mul bx

add ax,cx

mov a,ax

jmp nhap

inso:

;

lea dx,st2

mov ah,9

int 21h

mov bx,16

mov ax,a

mov cx,0

chia:

mov dx,0

div bx

cmp dx,10

jae doi

add dx,30h

jmp cat

doi: add dx,37h

cat:

push dx

inc cx

cmp ax,0

je hien

jmp chia

hien:

pop dx

mov ah,2

int 21h

loop hien

ra:

mov ah,4ch

int 21h

main endp

end main

bài 4

Lập chương trình nhập vào 1 số kiêu word in ra màn hình mã nhị phân tương

ứng của số đó .model tiny

.stack 100h

.data

st1 db 'Nhap so kieu WORD :$'

st2 db 13,10,'Ma nhi phan tuong ung:$'

so dw 0

.code

main proc

Page 38: Tong Hop Assembly 8086

mov ax,@data

mov ds,ax

lea dx,st1

mov ah,9

int 21h ;In xau st1

nhap:

mov ah,1

int 21h

cmp al,13

je nhiphan

sub al,30h

mov ah,0

mov cx,ax

mov bx,10

mov ax,so

mul bx

add ax,cx

mov so,ax

jmp nhap

nhiphan:

lea dx,st2

mov ah,9

int 21h

mov cx,0

mov bx,2

mov ax,so

chia:

mov dx,0

div bx

add dx,30h

push dx

inc cx

cmp ax,0

je inso

jmp chia

inso:

pop dx

mov ah,2

int 21h

loop inso

ra:

mov ah,4ch

int 21h

main endp

end main

Bài 3

Cho một mảng M gồm 20 phần tử kiểu Word giá trị tuỳ ý(không phải nhập

giá trị các phần tử).Tính tổng giá trị các phần tử có giá trị chia hết cho 7

.model tiny

.stack 100h

.data

st1 db 13,10,'tong cac phan tu chia het cho 7:$'

st2 db 13,10,'$'

m db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

a db 0

.code

main proc

mov ax,@data

mov ds,ax

;in thông báo nhập số thứ 1

lea dx,st1

mov ah,9

int 21h

mov cx,20 ;gán cx=20

lea si,m ;si trỏ đến ngăn nhớ đầu tiên của mảng M

mov a,0 ; khởi tạo a=0

duyet:

mov al,[si] ; đưa các giá trị trong mảng do si trỏ đến vào al

mov bl,7 ;gán bl=7

mov ah,0 ;xoá bít cao

div bl ;chia al cho 7

cmp ah,0 ;so sánh thương với 0

je tong ;nếu bằng thì tính tổng

jmp tiep

tong:

mov al,[si] ; đưa các giá trị trong mảng do si trỏ đến vào al

mov bl,a ; đ ưa số a vào bl

add al,bl ;c ộng al v ơí bl kết quả cất vào al

mov a,al ;chuyển kết quae\r vào biến a

Page 39: Tong Hop Assembly 8086

tiep:

inc si ;tăng chỉ số mảng

inc dl ;tăng dl

loop duyet

mov al,a ;chuyển số trở lại thanh ghi al

mov bl,10 ;gán bl =10

mov cx,0 ;khởi tạo biến đếm

chia:

mov ah,0 ;xoá bít cao

div bl ;lấy kết quả chia cho 10

mov dl,ah ;chuyển dư vào dl

add dl,30h ;chuyển số sang dạng ký tự

push dx ;dẩy dư vào ngăn xếp

inc cx ;tăng biến đếm

cmp al,0 ;so sánh thương với 0

je inso ;nếu bằng thì in số

jmp chia

inso:

pop dx

mov ah,2

int 21h

loop inso

ra:

mov ah,4ch

int 21h

main endp

end main

Bài 2

Lập chương trình nhập vào 2 số kiểu word,in ra màn hình tổng 2 số vừa

nhập

.model tiny

.stack 100h

.data

tb1 db 'nhap so thu 1:$'

tb2 db 13,10 ,'nhap so thu 2:$'

tb3 db 13,10,'tong 2 so$'

so1 dw 0

so2 dw 0

tong dw 0

.code

main proc

mov ax,@data

mov ds,ax

;in thong bao nhap so thu nhat

lea dx,tb1

mov ah,9

int 21h

nhap1:

mov ah,1

int 21h

cmp al,13 ;so sanh ky tu vua nhap voi 13

je nhap2 ;neu bang nhap so thu 2

sub al,30h ;doi ky tu sang so

mov ah,0 ;xoa bit cao

mov cx,ax ;cat so vua nhap vào cx

mov ax,so1 ;đua bien sô 1 vê kiêu byte de chuan bi nhann vói 10

mov bx,10 ;gan bx =10

mul bx ; nhân ax voi 10

add ax,cx ;công ket qua vua nhan voi so vua nhap ket qua cât vào ax

mov so1,ax ; cat kêt qua vao bién sô1

jmp nhap1

nhap2:

lea dx,tb2 ;hiên thông báo nhâp sô thu 2

mov ah,9

int 21h

nhap: mov ah,1 ;nhap sô thu 2

int 21h

cmp al,13 ;so sánh ký tu vua nhâp voi 13

je tinhtong ;nêu băng thì tính tông

sub al,30h ;chuyên ký tu sang dang sô

mov ah,0 ;xoá bít cao

mov cx,ax ;cât kêt qua vua nhap vào cx

mov ax,so2 ;đua biên sô 2 vê kiêu byte

mov bx,10 ;gan bx=10

mul bx ;nhân kêt qua vua nhap voi 10

Page 40: Tong Hop Assembly 8086

add ax,cx ;công kêt qua vua nhân vói sô vua nhâp

mov so2,ax ;cât kêt qua vào biên sô 2

jmp nhap

tinhtong:

mov dx,tong

mov ax,so1 ;đua biên sô 1 ra thanh ghi ax

mov bx,so2 ;đua biên só 2 ra thanh ghi bx

add ax,bx ;công ax voi bx kêt qua cat vao ax

mov tong,ax ;dua kêt qua tu ax vào biên tông

inso: mov ah,9 ;hiên thông báo in tông

lea dx,tb3

int 21h

mov ax,tong ;đua kêt qua trongv bien tông ra thanh ghi ax

mov dx,0 ;xoa bit cao dx

mov bx,10 ;gán bx=10

mov cx,0 ;khoi tao biên đêm

chia: div bx ;lây kêt qua chia cho 10

push dx ;du o dx đây vao ngăn xêp

inc cx ;tăng biên đêm

cmp ax,0 ;so sanh thuong voi 0

je hienkq ;neu băng thì hiên kêt qua

xor dx,dx ;xoa bit cao trong dx

jmp chia

hienkq: pop dx ;lây du trong ngăn xêp ra khoi dx

add dl,30h ;chuyên sô thành dang ký tu

mov ah,2 ;in tông

int 21h

loop hienkq

ra: mov ah,4ch

int 21h

Main endp

End main

Page 41: Tong Hop Assembly 8086

Ví duï 2 : Vieát ñoaïn maõ ñeå coäng vaøo AX 10 phaàn töû cuûa moät maûng W ñònh

nghóa nhö sau :

W DW 10,20,30,40,50,60,70,80,90,100

Giaûi :

XOR AX,AX ; xoaù AX

LEA SI,W ; SI troû tôùi ñòa chæ cô sôû ( base) cuûa maûmg W .

MOV CX,10 ; CX chöaù soá phaàn töû cuûa maûng

ADDITION:

ADD AX,[SI] ; AX=AX + phaàn töû thöù nhaát

ADD SI,2 ; taêng con troû leân 2

LOOP ADDITION ; laëp

Ví duï 3 : Vieát thuû tuïc ñeå ñaûo ngöôïc moät maûng n töø . Ñieàu naøy coù nghóa

laø phaàn töû thöù nhaát seõ ñoåi thaønh phaàn töû thöù n , phaàn töû thöù hai seõ thaønh phaàn töû thöù

n-1 ... Chuùng ta seõ duøng SI nhö laø con troû cuûa maûng coøn BX chöùa soá phaàn töû cuûa

maûng ( n töø ) .

Giaûi : Soá laàn trao ñoåi laø N/2 laàn . Nhôù raèng phaàn töû thöù N cuûa maûng coù ñòa

chæ A+2x(N-1)

Ñoaïn maõ nhö sau :

REVERSE PROC

; input: SI= offset of array

; BX= number of elements

; output : reverse array

PUSH AX ; caát caùc thanh ghi

PUSH BX

PUSH CX

PUSH SI

PUSH DI

; DI chæ tôùi phaàn töû thöù n

MOV DI,SI ; DI troû tôùi töø thöù nhaát

MOV CX,BX ; CX=BX=n : soá phaàn töû

DEC BX ; BX=n-1

SHL BX,1 ;BX=2x(n-1)

ADD DI,BX ;DI = 2x(n-1) + offset cuûa maûng : chæ tôùi phaàn töû

; thöù n

SHR CX,1 ;CX=n/2 : soá laàn trao ñoåi

; trao ñoåi caùc phaàn töû

XCHG_LOOP:

MOV AX,[SI] ; laáy 1 phaàn töû ôû nöûa thaáp cuûa maûng

XCHG AX,[DI] ; ñöa noù leân nöûa cao cuûa maûng

MOV [SI],AX ; hoaøn thaønh trao ñoåi

ADD SI,2 ; SI chæ tôùi phaàn töû tieáp theo cuûa maûng

SUB DI,2 ; DI chæ tôùi phaàn töû thöù n-1

LOOP XCHG_LOOP

POP DI

POP SI

POP CX

POP BX

POP AX

RET

REVERSE ENDP Chia mang .MODEL SMALL .STACK 100H .DATA a dw 5,3,4,5,-3 b db 1,3,-3,4,5 c db 5 dup(0) d db 5 dup(0) .code main proc mov ax,@data mov ds,ax lea si,a lea di,b lea bx,c lea bp,d mov bx,5 CHIA: mov ax,a[si] mov dl,b[di] cmp ax,0 jl dau cmp dl,0 jl dau div ax,dl mov c[bx],al mov d[bp],ah inc si inc si inc di inc bx inc bp loop CHIA jmp dos dau: idiv ax,b[di]

Page 42: Tong Hop Assembly 8086

mov c[bx],al mov d[bp],ah inc si inc si inc di inc bx inc bp loop CHIA dos: mov ah,4ch int 21 main andp end main Tinh tong trong mang .MODEL SMALL .STACK 100H .DATA A DB 2,4,3 ; KHAI BAO MANG .CODE START: ; LAY VUNG DATA MOV AX,@DATA mOV DS,AX ;TINH TONG LEA SI,A MOV CX,3 MOV AX,0000 LAP: ADD AL,[SI] ADD SI,1 LOOP LAP MOV BL,3 DIV BL ADD AL,30H MOV DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21H END START Tim max min trong mang .MODEL SMALL .STACK 100H .DATA A DB 2,4,6,2,4,6,4,6,4,1 ; KHAI BAO MANG MIN DB ? ; khai bao 1 bien min

MAX DB ? ; KHAI BAO 1 BIEN Max .CODE START: ; LAY VUNG DATA MOV AX,@DATA mOV DS,AX ;TIM MAX MOV CX,9 ; DE SO SANH VOI 9 PHAN TU CON LAI ;GAN CHO MAX BANG A0 LEA SI,A MOV AL,[SI] ; gan al bang a0 MOV MAX,AL ;gan MAX bang al ;BAT DAU SO SANH LAP_MAX: ADD SI,1; con tro si tang len 1b MOV BL,[SI];gan bl bang noi dung cua si CMP MAX,BL ;so sanh MAX voi bl ;Neu MAX LON hon thi nhay JA L_GAN_MAX ; max khong LON hon thi thuc hien MOV AL,[SI] MOV MAX,AL L_GAN_MAX: ;quay lai so sanh voi phan tu tiep theo LOOP LAP_MAX ;IN KET QUA MOV DL,30H ADD DL,MAX MOV AH,2 INT 21H ;TRO VE DOS MOV AH,4CH INT 21H END START ;*******************Bai1****************** ;* Tinh tong ca so chan trong doan 0-100 * ;***************************************** .MODEL SMALL .STACK 100H .DATA .CODE START: MOV CX,0 ; Gan CX=0, gia tri dau trong khoang 0,100 XOR BX,BX ; Xoa BX de luu tong

Page 43: Tong Hop Assembly 8086

LAP: ADD BX,CX ; Tinh tong INC CX INC CX ;Tang CX len 2 don vi CMP CX,100H ; So sanh CX voi 100 JB LAP ; Neu CX< hoac = 100 thi nhay toi LAP va tiep tuc cong ; Tro ve DOS MOV AH, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;*******************Bai32***************************** ;* Nhap vao n<10 so tn, tinh tong n so do, kq luu vao BX * ;*************************************************** .MODEL SMALL .STACK 100H .DATA MSG DB "SO PHAN TU (N<10): $" .CODE START: ; Lay du lieu LABLE: ; Nhan de quay lai, khi nhap vao ko la so MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG ; tro den msg ;IN RA MAN HINH MOV AH,9 INT 21H ; Vao 1 ki tu MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV BL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao CMP BL, 2Fh ; Neu BL nho hon hoac bang 2FH (tu la nho hon 0) JB LABLE ; thi nhay den LABLE de nhap lai CMP BL, 39h ; Neu BL > 39H (tu la > hon 9) JA LABLE ; thi nhay den LABLE de nhap lai ; Thuc hien nhap XOR CX,CX ; Xoa thanh ghi CX MOV CL,BL ; Lay so phan tu can nhap SUB CL,30H ; TRu di de cho ra so phan tu can nhap

NHAP: MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 ; Kiem tra ki tu nhap vao CMP AL, 2Fh ; Neu AL nho hon hoac bang 2FH (tu la nho hon 0) JB NHAP ; thi nhay den NHAP de nhap lai CMP AL, 39h ; Neu AL > 39H (tu la > hon 9) JA NHAP ; thi nhay den NHAP de nhap lai XOR DX,DX ; Xoa thanh ghi DX de luu kq nhap vap sau do push vao stack MOV DL,AL ; Luu so vua nhap vao DL PUSH DX ; Dua so vua nhap vao stack ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong LOOP NHAP ; Lap den khi nao CX=0 ;Tinh tong XOR CX,CX ; Xoa thanh ghi CX MOV CL,BL ; Dua so phan tu vao CX SUB CL,30H ; TRu di de cho ra so phan tu can nhap XOR BX,BX ; Xoa thanh ghi BX de luu tong LAP: POP AX ; Lay du lieu tu stack va luu vao BX ADD BX,AX ; Doi ra ki tu de in dung ket qua LOOP LAP ; Lap den khi CX=0 ; Tro ve DOS MOV AH, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;*******************Bai1****************** ;* Hien thi thap phan cua gia tri trong BX * ;***************************************** ; Thuat toan: Dung so trong BX chia cho 10 lay phan du luu vao Stack ; Bai nay khi Debug thay ko co loi gi, nhung khi chua lai mac loi tran bo nho chua giai quyet duoc .MODEL SMALL .STACK 100H .DATA .CODE START: ;Phep chia 16 bit: ; So bi chia duoc chua trong AX, sau khi thuc hien phep chia ; Thuong duoc chua trong AX ; So du duoc chua trong DX

Page 44: Tong Hop Assembly 8086

; Thuc hien phep chia MOV AX,BX ; Dua so bi chi vao AX MOV BX,10h ; Dua vao BX so chia MOV CX,0 ; Dem so gia tri nhi phan, phuc vi cho viec hien thi CHIA: DIV BX ; Chia cho 10 PUSH DX ; So du luu trong DX duoc dua vao stack INC CX ; Tang CX len 1 CMP AX,0 ; So sanh voi 0 xem da chia xong chua JE HIENTHI ; Neu =0 thi nhay den HIENTHI JMP CHIA ; Neu khac 0 thi tiep tuc chia HIENTHI: ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Lay tu STACK ra va hien thi LAP: XOR BX,BX ; Xoa BX de chuan bi lay du lieu tu stack POP BX ; Lay du lieu tu stack va luu vao BX ADD BX,30H ; Doi ra ki tu de in dung ket qua MOV DX,BX ; Lay ki tu INT 21h ; Thuc hien hien t hi LOOP LAP ; Lap den khi CX=0 ; Tro ve DOS MOV AH, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;*******************Bai11****************** ;* Kiem tra xem gia tri luu trong BX la chan hay le * ;***************************************** .MODEL SMALL .STACK 100H .DATA MSG1 DB "TRONG BX LA SO CHAN ! $" MSG2 DB "TRONG BX LA SO LE !" .CODE START: ;Phep chia 16 bit: ; So bi chia duoc chua trong AX, sau khi thuc hien phep chia ; Thuong duoc chua trong AX ; So du duoc chua trong DX ; Thuc hien phep chia

MOV AX,BX ; Chep gia tri trong BX de thuc hien phep chia cho 2 MOV CX,2 ; Chon CX la so bi chia DIV CX ; Chia cho 2 CMP DX,0 ; So sanh voi 0 xem da chia xong chua ( day la so du cua phep chia) JE SOCHAN ; Neu =0 thi nhay den HIENTHI JMP SOLE ; Neu khac 0 thi tiep tuc chia SOCHAN: ; Lay du lieu MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG1 ; tro den msg1 ;IN RA MAN HINH MOV AH,9 INT 21H ; Tro ve DOS MOV AH, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS SOLE: ; Lay du lieu MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG1 ; tro den msg2 ;IN RA MAN HINH MOV AH,9 INT 21H ; Tro ve DOS MOV AH, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;************************************Bai3********************************* ;* Cho truoc 2 so TN trong AX va BX Kiem tra xem so lon hon nam trong thanh ghi nao* ;************************************************************************* .MODEL SMALL .STACK 100H .DATA MSG1 DB "SO LON NAM TRONG AX $" MSG2 DB "SO LON NAM TRONG BX $" .CODE START: ; Lay du lieu

Page 45: Tong Hop Assembly 8086

LABLE1: ; Nhan de quay lai, khi nhap vao ko la so MOV AX,@DATA ; Load vao du lieu MOV DS,AX ; So sanh 2 so CMP AX, BX ; So sanh AX voi BX JB PRINT2 ; Neu AX < HOAC BANG BX thi nhay den nhan PRINT1 JA PRINT1 ; Neu AX > BX thi nhay den nhan PRINT2 PRINT1: LEA DX,MSG1 ; tro den msg1 ;IN RA MAN HINH MOV AH,9 INT 21H JMP DOS PRINT2: LEA DX,MSG2 ; tro den msg2 ;IN RA MAN HINH MOV AH,9 INT 21H DOS: ; Tro ve DOS MOV Ah, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;************************************Bai1******* ;* Nhap vao 1 so tn < 8. tinh ! cua so do. KQ luu vao BX * ;*********************************************** .MODEL SMALL .STACK 100H .DATA MSG DB "NHAP VAO SO DUONG < 8: $" .CODE START: ; Lay du lieu LABLE: ; Nhan de quay lai, khi nhap vao ko la so MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG ; tro den msg ;IN RA MAN HINH MOV AH,9 INT 21H MOV BX,0 ; Chuan bi thanh ghi ; Vao 1 ki tu MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21

MOV BL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao CMP BL, 2Fh ; Neu BL nho hon hoac bang 2FH (tu la nho hon 0) JB LABLE ; thi nhay den LABLE de nhap lai CMP BL, 37h ; Neu BL > 37H (tu la > hon 7) JA LABLE ; thi nhay den LABLE de nhap lai ; Tinh giai thua CMP BL,30h ; So sanh voi 0 JE ONE ; Neu = 0 thi nhay toi ONE CMP BL,31h ; So sanh voi 1 JE ONE ; Neu = 1 thi nhay toi ONE MOV AX,BX ; Copy gia tri vua nhap vao LAP: DEC BX ; Giam CX di 1 dv MUL BX ; Nhan BX voi gia tri trong AX ket qua luu vao AX CMP BX,31h ; So sanh BX voi 1 JA LAP ; Neu BX con > 1 thi nhay toi LAP MOV BX,AX ; Luu ket qua vao BX JMP DOS ; Da xong- nhay ve DOS ONE: MOV BX,31h ; Ket qua la 1 neu so nhap vao la 0 hoac 1 DOS: ; Tro ve DOS MOV Ah, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;************************************Bai1******* ;* Nhap vao 1 so tn < 8. tinh ! cua so do. KQ luu vao BX * ;*********************************************** .MODEL SMALL .STACK 100H .DATA MSG DB "NHAP VAO SO DUONG < 8: $" .CODE START: ; Lay du lieu LABLE: ; Nhan de quay lai, khi nhap vao ko la so MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG ; tro den msg

Page 46: Tong Hop Assembly 8086

;IN RA MAN HINH MOV AH,9 INT 21H MOV BX,0 ; Chuan bi thanh ghi ; Vao 1 ki tu MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV BL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao CMP BL, 2Fh ; Neu BL nho hon hoac bang 2FH (tu la nho hon 0) JB LABLE ; thi nhay den LABLE de nhap lai CMP BL, 37h ; Neu BL > 37H (tu la > hon 7) JA LABLE ; thi nhay den LABLE de nhap lai ; Tinh giai thua CMP BL,30h ; So sanh voi 0 JE ONE ; Neu = 0 thi nhay toi ONE CMP BL,31h ; So sanh voi 1 JE ONE ; Neu = 1 thi nhay toi ONE MOV AX,BX ; Copy gia tri vua nhap vao LAP: DEC BX ; Giam CX di 1 dv MUL BX ; Nhan BX voi gia tri trong AX ket qua luu vao AX CMP BX,31h ; So sanh BX voi 1 JA LAP ; Neu BX con > 1 thi nhay toi LAP MOV BX,AX ; Luu ket qua vao BX JMP DOS ; Da xong- nhay ve DOS ONE: MOV BX,31h ; Ket qua la 1 neu so nhap vao la 0 hoac 1 DOS: ; Tro ve DOS MOV Ah, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;************************************Bai1**************** ;* Nhap vao 1 ki tu. Xuong dong, in cac ki tu ki tu vua nhap ->z * ;******************************************************** .MODEL SMALL .STACK 100H .DATA

MSG DB "NHAP VAO CHU IN THUONG: $" .CODE START: LABLE: ; Nhan de quay lai, khi nhap vao ko la chu in thuong ; Lay du lieu MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG ; tro den msg ;IN RA MAN HINH CHUOI MSG MOV AH,9 INT 21H ; Vao 1 ki tu MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV BL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao co la chu in thuong ko CMP BL, 60h ; Neu BL nho hon hoac bang 60H (tu la nho hon a) JB LABLE ; thi nhay den LABLE de nhap lai CMP BL, 7Bh ; Neu BL > 7BH (tu la > hon z) JA LABLE ; thi nhay den LABLE de nhap lai ; Hien thi MOV CL, 7AH ; Luu ma hexa cua ki z DEC BL ; Tang gia tri vua nhap len 1 LAP: ; Hien thi cac ki tu INC BL ; Giam BL di 1 MOV DL, BL ; Lay ki tu INT 21h ; Thuc hien hien thi CMP BL,CL ;So sanh xem da den ki tu z chua JB LAP ;Neu < hoac = thi nhay den LOOP ; Tro ve DOS

Page 47: Tong Hop Assembly 8086

MOV Ah, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;************************************Bai3******************************** ;* Chuong trinh vao 2 ki tu so nho hon 10.Tim so nho nhat * ;* Va in ket qua tren dong tiep theo * ;************************************************************************ .MODEL SMALL .STACK 100H .DATA MSG1 DB "NHAP VAO SO a < 10: $" MSG2 DB "NHAP VAO SO b < 10: $" .CODE START: ; Lay du lieu LABLE1: ; Nhan de quay lai, khi nhap vao ko la so MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG1 ; tro den msg1 ;IN RA MAN HINH MOV AH,9 INT 21H ; Vao ki tu thu 1 MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV BL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao CMP BL, 29h ; Neu BL nho hon hoac bang 29H (tu la nho hon 0) JB LABLE1 ; thi nhay den LABLE de nhap lai CMP BL, 39h ; Neu BL > 39H (tu la > hon 9) JA LABLE1 ; thi nhay den LABLE de nhap lai LABLE2: ; Nhan de quay lai, khi nhap vao ko la so

MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG2 ; tro den msg2 ;IN RA MAN HINH MOV AH,9 INT 21H ; Vao ki tu thu 2 MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV CL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao CMP CL, 29h ; Neu CL nho hon hoac bang 29H (tu la nho hon 0) JB LABLE2 ; thi nhay den LABLE de nhap lai CMP CL, 39h ; Neu CL > 39H (tu la > hon 9) JA LABLE2 ; thi nhay den LABLE de nhap lai ; So sanh 2 so CMP BL, CL ; So sanh BL voi CL JB PRINT ; Neu BL < CL thi nhay den nhan PRINT JA MIN ; Neu BL > CL thi nhay den nhan MIN MIN: MOV BL, CL ; Copy CL vao BL de hien thi PRINT: ; Hien thi ki tu MOV DL, BL ; Lay ki tu INT 21h ; Thuc hien hien t hi ; Tro ve DOS MOV Ah, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START ;**********************************Bai2****************************** ;* Chuong trinh vao 1 ki tu so va 1 ki tu chu thuong. Neu khong dung thi nhap lai * ;* Neu dung thi in ki tu va so do ra man hinh * ;******************************************************************** .MODEL SMALL

Page 48: Tong Hop Assembly 8086

.STACK 100H

.DATA MSG1 DB "NHAP VAO SO DUONG < 10: $" MSG2 DB "NHAP VAO CHU IN THUONG: $" .CODE START: LABLE1: ; Nhan de quay lai, khi nhap vao ko la so ; Lay du lieu MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG1 ; tro den msg1 ;IN RA MAN HINH CHUOI 1 MOV AH,9 INT 21H ; Vao ki tu thu nhat MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV BL,AL ; Luu ki tu vua nhap vao BL ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao CMP BL, 29h ; Neu BL nho hon hoac bang 29H (tu la nho hon 0) JB LABLE1 ; thi nhay den LABLE de nhap lai CMP BL, 39h ; Neu BL > 39H (tu la > hon 9) JA LABLE1 ; thi nhay den LABLE de nhap lai LABLE2: ; Nhan de quay lai, khi nhap vao ko la chu in thuong ; Lay du lieu MOV AX,@DATA ; Load vao du lieu MOV DS,AX LEA DX,MSG2 ; tro den msg1 ;IN RA MAN HINH CHUOI 2 MOV AH,9 INT 21H ; Vao ki tu thu 2 MOV AH, 1 ; Ham doc 1 ki tu INT 21h ; Goi interupt 21 MOV CL,AL ; Luu ki tu vua nhap vao CL

; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Kiem tra ki tu nhap vao co la chu in thuong ko CMP CL, 60h ; Neu BL nho hon hoac bang 60H (tu la nho hon a) JB LABLE2 ; thi nhay den LABLE de nhap lai CMP CL, 7Ah ; Neu BL > 7AH (tu la > hon z) JA LABLE2 ; thi nhay den LABLE de nhap lai ; Hien thi ki tu thu nhat MOV DL, BL ; Lay ki tu INT 21h ; Thuc hien hien thi ; Xuong dong MOV AH, 2 ; Ham hien thi ra man hinh MOV DL, 0Dh ; Ki tu ve dau dong INT 21h ; Thuc hien ve dau dong MOV DL, 0Ah ; Ki tu xuong dong INT 21h ; Thuc hien xuong dong ; Hien thi ki tu thu hai MOV DL, CL ; Lay ki tu INT 21h ; Thuc hien hien thi ; Tro ve DOS MOV Ah, 4Ch ; Ham thoat ve DOS INT 21H ; Thuc hien thoat ve DOS END START