tong hop assembly 8086
TRANSCRIPT
; ; 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
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
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
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
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
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
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
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
; 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
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
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
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
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
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
; 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
; 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 $'
.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
; ; 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
RET NHAP8 ENDP END MAIN ; - asm2html -
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
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
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
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
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
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
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]
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
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
; 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
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
;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
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
.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