Đoơi chuoêi sô hex thành giá trị nhị phađn 4 byte

Một phần của tài liệu Giáo trình TASM (Trang 37 - 40)

CHƯƠNG 6: MOƠT SÔ CÂU TRÚC VAØ GIẠI THUAƠT CAÍN BẠN 6.1CÂU TRÚC IF

6.5.7Đoơi chuoêi sô hex thành giá trị nhị phađn 4 byte

HTN proc near ; Input :

; DS:SI = Buffer chứa num-str dáng hexa ; CL = chieău dài cụa num-str

; Output:

; CF=1 --> loêi chuyeơn đoơi

; CF=0 --> DX:AX = giá trị nhị phađn tương ứng ;

push bx push cx push si xor ch,ch

xor bx,bx ; DX|BX chứa kêt quạ trung xor dx,dx ; gian

mov ah,0Fh HTN0:

cmp byte ptr [si],’ ‘ ; Bỏ qua các khoạng trông jne HTN1 ; beđn trái chuoêi sô

inc si loop HTN0

jmp HTN4 ; Chuoêi sô “roêng” HTN1:

mov al,byte ptr [si] inc si sub al,’0’ jc HTN4 ; AL < ‘0’ --> loêi cmp al,9 jb HTN2 sub al,’A’-‘9’-1 cmp ah,al jc HTN4 ; AL > ‘F’ --> loêi HTN2: push cx mov cl,4 HTN3: shl bx,1 ; Nhađn DX|BX với 16 rcl dx,1 ; loop HTN3 ;

or bl,al ; Coơng doăn giá trị mới pop cx

loop HTN1 ; Cho đên khi hêt chuoêi sô HTN4: mov ax,bx pop si pop cx pop bx ret HTN endp

6.5.8Đoơi chuoêi sô bin thành giá trị nhị phađn 4 byte

BTN proc near ; Input :

; DS:SI = Buffer chứa num-str dáng binary ; CL = chieău dài cụa num-str

; Output:

; CF=1 --> loêi chuyeơn đoơi

; CF=0 --> DX:AX = giá trị nhị phađn tương ứng ; push bx push cx push si xor ch,ch xor bx,bx xor dx,dx BTN0:

cmp byte ptr [si],’ ‘ ; Bỏ qua các khoạng trông jne BTN1 ; beđn trái chuoêi sô

inc si loop BTN0

jmp BTN2 ; Chuoêi sô “roêng” BTN1:

mov al,byte ptr [si] inc si

sub al,’0’

jc BTN2 ; AL < 0 --> loêi cmp al,1

ja BTN2 ; AL > 1 --> loêi

shr al,1 ; Bit giá trị đaịt trong CF rcl bx,1 ;

rcl dx,1 ; Chuyeơn vào DX|BX loop BTN1

mov ax,bx pop si pop cx pop bx ret BTN endp

CHƯƠNG 7 : CÁC TÁC VÚ VEĂ CHUOÊI 7.1LODSB/LODSW (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Giáo trình TASM (Trang 37 - 40)