Tải bản đầy đủ (.pdf) (9 trang)

Code by Jellydn ASM LIB Support from 06Tonline Việc chuyển đổi qua lại giữa hệ số pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (38.6 KB, 9 trang )



Code by Jellydn
ASM LIB Support from 06Tonline

Việc chuyển đổi qua lại giữa hệ số thì chỉ cần 4 chương trình sau là đủ (
hex < > dec và bin < > oct) . Đọc qua code ,các bạn dễ dàng thấy
được rằng :
- Đoạn code in ra số bin,oct,dec là như nhau ( chỉ sửa từ 39H à37H
hay à31H)
- Thủ tục nhập số bin,oct là như nhau .
- Nhập 16 và in 16 là có sự khác ( do có chữ ) nên trong tài liệu này đã
có.
- Phương pháp in ra là như nhau ( đều lưu vào stack sao đó đọc ra lại )
.Còn nhập số bin,oct,hex là như nhau . Chỉ có nhập số dec là khác.
Do đó ,chỉ cần 4 code này . Các bạn có thể làm được chuyển qua lại của
tất cả hệ ^^.
Chú ý :
-Chương trình chỉ làm việc với số từ 0à65535
-Khi nhập số hex thì phải dùng chữ hoa (tức là ‘A’ ,ko phải là ‘a’).

Hi vọng với tài liệu này sẽ giúp ích cho các bạn trong đợt thi giữa kì này .

Ebook được làm bởi Jellydn.


;
; 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 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 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 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

×