ВГ
Владимир Гогонов

Assembler: Взаимодействие с пользователем

киньте пожалуйста пример на ассемблере, когда программа взаимодействует с пользователем.
что-то на подобии:

-укажите цвет:
-красный
-этот цвет принадлежит к тёплым тонам
укажите цвет:
-синий
-этот цвет принадлежит к холодным тонам
укажите цвет:
-палитра
-ошибка

Ри
Римма

Ассемблеры разные бывают.
Пример консольной программы Windows для компилятора MASM с использованием SDK Masm32:

.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include msvcrt.inc
includelib kernel32.lib
includelib msvcrt.lib

.stack 100h

.data
Prompt db "Укажите цвет: ",0
InFrmt db "%s",0
txtWarm db "Этот цвет принадлежит к тёплым тонам",0
txtCool db "Этот цвет принадлежит к холодным тонам",0
txtErr db "Ошибка",0
txtEnd db 13,10,10,"Для завершения работы нажмите любую клавишу",0
;Массив строк с названиями тёплых тонов
WarmCol db "красный",0,0,0,0
db "желтый",0,0,0,0,0
db "оранжевый",0,0
;Массив строк с названиями холодных тонов
CoolCol db "синий",0,0,0,0,0,0
db "голубой",0,0,0,0
db "зеленый",0,0,0,0
db "фиолетовый",0
WarmNum equ 3 ;длина массива тёплых цветов
CoolNum equ 4 ;то же, холодных
ColorLen equ 11 ;размер названия цвета. Все цвета дополнены нулями до этой длины

.data?
Buffer db 1025 dup (?) ;буфер ввода строки с клавиатуры

.code
start:
invoke crt_printf,addr Prompt
invoke crt_scanf,addr InFrmt, addr Buffer
lea esi,WarmCol
mov ecx,WarmNum
call TestColor
jnz CoolTst
invoke crt_printf,addr txtWarm
jmp Quit

CoolTst:
lea esi,CoolCol
mov ecx,CoolNum
call TestColor
jnz Error
invoke crt_printf,addr txtCool
jmp Quit

Error:
invoke crt_printf,addr txtErr

Quit:
invoke crt__flushall
invoke crt_printf,addr txtEnd
Inkey:
invoke crt__kbhit
test eax,eax
jz Inkey
invoke ExitProcess,NULL

TestColor proc
push esi
push ecx
invoke crt_strcmp,addr Buffer,esi
pop ecx
pop esi
add esi, ColorLen
or eax,eax
jz EndTest
loop TestColor
EndTest:
ret
TestColor endp
end start

> на си знаю
Если вы знаете Си, то без труда найдёте в тексте программы знакомые функции printf, scanf, strcmp, kbhit, flushall, а также вызов функции WinAPI ExitProcess.

АБ
Алексей Буканов

Ассемблер????)))))))))) ) Бери лучше Си.

Похожие вопросы
[ASSEMBLER] Как выйти на обработчик прерывания?
Assembler лаба не могу разобраться
Собственный обработчик прерывания (ASSEMBLER)
Как вывести информацию на экран, assembler
Assembler!!! help me!!
С чего начать? Assembler
Assembler. Как описать переменную?
Где ошибка в коде assembler!!!
где можно скачать NASM (Netwide Assembler)?
Взгляните на мой плохой Assembler