code segment
.386
assume cs:code,ds:data
begin:
mov ax, data
mov ds, ax
;mov cx,4
xor ax,ax
xor si,si
xor bh,bh
xor bl,bl
mov cx, 9
P:
mov fff, cx
mov al, mass[si] ;take 8 bit
mov cx,8
mov dl,8
O:
push ax
push cx
dec dl
mov cl, dl
shr al, cl
and al, 00000001B
xor bl, al
add bh,bl
mov bl, al
pop cx
pop ax
loop O
inc si
mov cx, word ptr fff
loop P
; перевод в 16 систему - можете не обращать внимания,работает 100%, это проверено
mov cx,4
mov bl,12
mov si,0
xor ax,ax
mov ax,bh
k1:
push ax
push cx
mov cl,bl
shr ax,cl
pop cx
and ax,000fh
cmp al,9
ja m4
add al,30h
jmp a3
m4: add al,37h
a3:mov byte ptr digit+[si],al
sub bl,4
inc si
pop ax
loop k1
mov ax, data
mov ds, ax
mov dx, offset digit
mov ah, 09h
int 21h
mov ah, 4ch
mov al,0
int 21h
code ends
data segment use16
mass db 1h,2h,3h,4h,5h,6h,7h,8h,9h
digit db 0,0,0,0,'h$'
ggg db '1$'
fff db 0
data ends
stk segment stack
db 256 dup(0)
stk ends
end begin
задача с побитовой обработкой
вот массив например:
mass db 1h,2h,3h,4h,5h,6h,7h,8h,9h
КОД:
Код:
Судя по всему, идет ошибка в подсчете. Может кто свежим взглядом найдет? :)
Код:
...
inc si
mov cx, [color=red]word[/color] ptr fff
loop P
...
data segment use16
...
fff [color=red]db[/color] 0
data ends
inc si
mov cx, [color=red]word[/color] ptr fff
loop P
...
data segment use16
...
fff [color=red]db[/color] 0
data ends