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