Я использую среду MASM32. Проги написаны под виндовс. Вот к примеру простая программа, которая считывает байты из массива inbyte, конвертирует их в биты, делает отступы и записывает все это дело в массив outbit. Затем выводит его через MessageBox:
Код:
.686
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
        .data
        MsgCaption  db  "Сообщение", 0
        inbyte  db  1h, 2h, 3h, 4h, 5h, 6h, 7h, 8h, 0
        outbit  db  100h dup(0h), 0
        inend   dd  ?, 0
        .code
start:  lea     ecx, outbit 
        dec     ecx    
        mov     inend, ecx
        inc     ecx
        lea     ebx, inbyte
loc_1:  mov     dl, 0h
        mov     al, [ebx]
loc_2:  mov     dh, 0h
        bt      ax, dx
        rcl     dh, 1h
        add     dh, 30h
        mov     [ecx], dh
        inc     dl
        inc     ecx
        cmp     dl, 7h
        jb      loc_2
        mov     al, 0Dh
        mov     [ecx], al
        inc     ecx
        inc     ebx
        cmp     ebx, inend
        jb      loc_1
        invoke  MessageBox, NULL,addr outbit, addr MsgCaption, MB_OK
        invoke  ExitProcess,NULL
        end     start
А вот теперь я хочу организовать ввод элементов с клавы. После стартовой метки вставил:
Код:
start:  in      al, 60h
(Если показать кусок листинга получилось)
Код:
...
        .code
start:  in      al, 60h
        lea     ecx, outbit
...
     Откомпилировал, запустил .exe файл (не консольный!) И .... ничего.. MsgBox с нужным сообщением не вывелся, как было до вставки=( 
     При запуске показалась смена курсора на песочные часики и обратно... Мое приложение не числиться среди исполняемых, пробовал потыркать кнопочки после "запуска" (может там ожидание изменений), но вывода окошка тоже не последовало.
    Может неправильно применил команду "in", или не ввел конструкций типа
"xor     ax, ax"? Подскажите в чем проблема.