Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Что означает


Автор: MaKeGoRR 28.8.2013, 19:43
byte ptr[si],al
Что значит ptr?
Вот весь код, может понадобится
Преобразование двоичного числа в шестнадцатеричную форму
Код

text    segment
assume  cs:text,ds:data
begin:
mov    ax,data
mov    ds,ax
mov ax,16385d                               
mov si,offset string            
call    wrd_asc
mov ah,09h
mov dx,offset string
int     21h
mov ah,4ch
mov al,0
int 21h
 
wrd_asc proc                       
push    ax
and ax,0f000h                            
mov cl,12
shr ax,cl                   
call    bin_asc
mov byte ptr[si],al
pop ax
push    ax
and ax,0f00h
mov cl,8
shr ax,cl
inc si
call    bin_asc
mov byte ptr[si],al
pop ax
push    ax
and ax,0f0h
mov cl,4
shr ax,cl
inc si
call    bin_asc
mov byte ptr[si],al
pop ax
push    ax
and ax,0fh
inc si
call    bin_asc
mov byte ptr[si],al
pop ax
ret
wrd_asc endp
 
bin_asc proc                
cmp al,9                
ja  lettr                         
add al,30h                       
jmp ok
lettr:                                  
add al,37h                       
ok:
ret
bin_asc endp
text    ends
 
data    segment
string  db 4 dup('?'),'h$'      
data    ends
 
stk segment stack
    db 256 dup(0)
stk ends
 
end begin

Автор: Rrader 30.8.2013, 14:33
Это директива указания размера операнда. Расшифровывается как byte pointer. Она здесь нужна ассемблеру для того, чтобы понять, данные какого размера нужно записать. Это не всегда очевидно, поскольку, например:
Код

mov [ebx], 2 ; 2 - это байт? или слово? или двойное слово? Хм...
mov byte ptr [ebx], 2 ; Поместить двойку как байт  (0000 0010) начиная с адреса в ebx
mov word ptr[ebx], 2 ; Поместить двойку как слово  (0000 0000 0000 0010) начиная с адреса в ebx
mov dword ptr [ebx], 2 ; Поместить двойку как двойное слово  (0000 0000 0000 0000 0000 0000 0000 0010) начиная с адреса в ebx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)