Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 10:48   #1
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию Разбор куска кода.

Приветствую всех активно (и не очень) программирующих Недавно начал изучать язык ассемблера, взял для примера программку (коротенькую игрушку, взял с хабры):
Код:
cseg segment para 'code'	
     assume cs: cseg,ds: cseg
     org 100H	

begin:
     push 0b800H	;   db 68H, 00H, 0b8H   
     pop ds		;   db 1FH 
     int 10H     
     mov bh, 7H 
    
main_loop:
     
     xchg   cx,ax      
     int 1AH         
     mov [bx], dl

delay:
     int 1AH
     cmp [bx], dl
     je delay
     
     xchg ax, si       
     add al, dl        
     xchg ax, si      

     xchg ax, cx       
     in al, 60H
     cmp al, 77
     jnz keytest1 
     inc bx
     inc bx 

keytest1:
     ja keytest2
     dec bx
     dec bx

keytest2:

     mov ah,0CH
     int 21H   

     mov ax, 0701H    
     mov dx, 1827H
     int 10H
     
     mov [si], ax           
     mov [di+51], dx    ; db 89H, 55H, 51H		
     cmp [bx], dh 		
     ja main_loop
     ret

cseg ends
     end begin
В общем-то все понятно, однако почему то инструкция push 0b800H (подсмотрел при дебагинге) раскладывается в 50 55 8B EC C7460200B8 5D, или по-русски:
Код:
push ax
push bp
mov bp, sp
mov word ptr [bp+02], B800
pop bp
В чем фокус?
Alexcomeback вне форума Ответить с цитированием
Старый 01.04.2011, 12:15   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

потому что совместимо с 8086, а такая инструкция появилась с 80286
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 05.04.2011, 18:14   #3
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию

Цитата:
Сообщение от airyashov Посмотреть сообщение
потому что совместимо с 8086, а такая инструкция появилась с 80286
Благодарю)) Частично осознал ситуацию)
Alexcomeback вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор кода. С++ TIT0 Помощь студентам 0 27.12.2010 11:17
-=Разбор кода (С++ и Ассемблерная вставка)=- MeTeOpA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 26.12.2010 16:46
Ввод куска кода с клавиатуры в процессе выполнения программы (язык Си) Florent Помощь студентам 4 05.02.2010 22:34
Прошу помощи в разборе куска кода драйвера RIL под ARM Lebets_VI Win Api 0 14.08.2009 13:58
Разбор кода программы на Bison+Flex Corol Помощь студентам 2 03.07.2009 09:57