Bài tp lp trình hp ng - S 5
Bài 1:
; Nhap so thap luc( toi da 4 ky tu) BX.
; Chuong trinh co kiem tra ky tu nhap phai hop le.
; viec nhap ket thuc khi nhan Enter hay da du 4 ky tu.
; xuat so thap luc
.model small
NhapKyTu macro d1
mov ah, 8
int 21h
mov d1, al
EndM
XuatKyTu macro d1
mov ah, 2
mov dl,d1
int 21h
EndM
XuatThongBao macro
mov ah, 9
int 21h
endM
XuongHang macro
mov ah, 2
mov dl, 10
int 21h
endM
.stack 100h
.data
i db ?
tb1 db 'Nhap so thap luc phan: $'
tb2 db 'So vua nhap:$'
.code
; lay dia chi vung du lieu
mov ax, @data
mov ds, ax
lea dx, tb1
XuatThongBao
call NhapsoThapLuc
XuongHang
call XuatSoThapLuc
xuonghang
;tro ve dos
mov ah, 4ch
int 21h
;==============================================
NhapSoThapLuc proc
; GIAI THUAT
; b1: xoa bx
; b2: Nhap 1 ky tu
; b3: neu ky tu la enter thi ket thuc
; b4: kiem tra ky tu vua nhap co phai tu '0' hay 'F' khong
; neu ko thi nhay toi b2
; nguoc lai toi b5
; b5: xuat ky tu vua nhap
; b6: doi ky tu thanh HEX tuong ung
; b7: dich trai bx 4 bit
; b8: dua tri da doi ( o buoc 6 ) vao 4 bit thap cua bx
; b9: toi b2 ( cho toi khi du 4)
; b10: ket thuc
xor cx,cx ; gan cx =0
xor bx,bx ; gan bx=0
mov cl,4
mov si, 4
NhapLai:
NhapKyTu i
cmp al,13 ; neu la enter thi ket thuc
je KetThuc
cmp al,'0'
jb NhapLai
cmp al,'9'
ja Tiep
jmp LaSo
Tiep:
cmp al,'A' ; kiem tra la chu HOA
jB NhapLai
cmp al,'F' ; kiem tra la chu HOA
jA TiepNua
jmp LaChuHoa
TiepNua:
cmp al,'a' ; kiem tra la chu THUONG
jB NhapLai
cmp al,'f' ; kiem tra la chu THUONG
jA NhapLai
jmp LaChuThuong
LaSo:
SUB al,'0' ; doi sang so tuong ung
jmp dichBX
LaChuHoa:
sub al,37h
jmp dichBX
LaChuThuong:
sub al,57h
jmp dichBX
dichBX:
shl bx,cl ; dich sang trai bx di CL bit
or bl,al ; dua bit vua nhap vao al
dec si
XuatKyTu i
jnz NhapLai
ketThuc:
ret
NhapSoThapLuc endp
XuatSoThapLuc proc
; GIAI THUAT
; chep bh vao dl
; dich phai dl 4 bit
; neu dl< 10 doi '0'..'9' tuong ung
; neu khong doi thanh 'A'..'F' tuong ung
; xuat ky tu trong dl
; quay trai bx 4 bit
jmp tieptuc
tam db ?