Я использую среду 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"? Подскажите в чем проблема.