Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что означает 
:(
    Опции темы
MaKeGoRR
Дата 28.8.2013, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.8.2013

Репутация: нет
Всего: нет



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


Это сообщение отредактировал(а) MaKeGoRR - 28.8.2013, 22:13
PM MAIL   Вверх
Rrader
Дата 30.8.2013, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: нет
Всего: 191



Это директива указания размера операнда. Расшифровывается как 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



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0939 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.