Лабы по ассемблеру

<< < (7/7)

LazarusLong:
Alder, ну насчет именно ассемблерных не скажу, но где-то зимой я убил три дня на то, что бы заставить обычный борландовский С++ 3.01 вменяемо работать в досбоксе. При этом каждая новая строчка компилируемого кода порождала новые проблемы (утрирую конечно, но не сильно). Это имело место быть под семеркой. В итоге я плюнул и поставил виртуалбокс с ХР на борту.

Kenny:
Цитата: LazarusLong от Апрель 08, 2010, 12:55:17

Alder, ну насчет именно ассемблерных не скажу, но где-то зимой я убил три дня на то, что бы заставить обычный борландовский С++ 3.01 вменяемо работать в досбоксе. При этом каждая новая строчка компилируемого кода порождала новые проблемы (утрирую конечно, но не сильно). Это имело место быть под семеркой. В итоге я плюнул и поставил виртуалбокс с ХР на борту.

Подтверждаю, глюк на глюке.

Магнетон Бора:
Цитировать

Досбокс все-таки довольно криво работает под вистой/семеркой

Поддтверждаю, у меня была проблема - не выводился символ "\", вместо него вылезал "[". Прочитал кучу мануалов, чтобы обойти этот баг в итоге у меня с горем пополам получилось чтобы выводилась пара символов "[\", скобку приходится теперь все время затирать  :(

Но не об этом речь сейчас, тут возник трабл. Может кто-нибудь чего посоветует...
Вобщем задача такая:
Написать ассемблер-программу, которая предусматривает ввода значений клавиш ALT+заглавные гласные и вывода их на экран.
Главное условие - для ввода символов используется функция 06h MS-DOS, для вывода - 09h MS-DOS.
Я сделал, в принципе все, но никак не могу сделать так, чтобы выводились значения совместно с нажатым ALT.

Код:

dosseg
.model small
.stack 100h
.data
buffer db ?
db '$'
glas db 'EYUIOA$' ; массив заглавных гласных букв
message db 'You have to input some characters...',13,10,'$'
warning db 13,10,'You should press any ALT!!!',13,10,'$'
remove db 8,32,8,'$'
quitmes db 13,10,'Key ESC was pressed, the main loop has been stoped. To quit the program press any key.$'
nextline db 13,10,'$'
.code
mov ax, @data
mov ds, ax
mov ah, 0ch ; очистка буфера клавиатуры
int 21h
mov dx, offset message ; выводим служебное сообщение и переходим на следующую строчку
mov ah, 09h
int 21h
;--------------------ВВОД И ВЫВОД СИМВОЛА СО ВСЕМИ ПРОВЕРКАМИ------
INPUT: mov ah, 06h
mov dl, 0FFh
int 21h
mov buffer, al
cmp al, 27
je STOP
cmp al, 13
je NEXT_LINE
cmp al, 8
je DELETE
mov si, 0
mov cx, 6
START_LOOP:
cmp glas[si], al
je SYMBOL_OUT
inc si
loop START_LOOP
jmp INPUT
SYMBOL_OUT:
mov bx, 0040h
mov es, bx
mov bx, 0018h
xor dx, dx
mov dx, es:[bx]
test dl, 1000b
;jne CONTINUE
;mov ah, 09h
;mov dx, offset warning
;int 21h
;jmp INPUT
CONTINUE:
mov ah, 09h
mov dx, offset buffer
int 21h
jmp INPUT
NEXT_LINE:
mov ah, 09h
mov dx, offset nextline
int 21h
jmp INPUT
DELETE:
mov ah, 09h
mov dx, offset remove
int 21h
jmp INPUT
;------------------------------------------------------------------
STOP:
mov ah, 09h
mov dx, offset quitmes
int 21h
mov ah, 10h ; ждем нажатия клавиши и завершаем работу программы
int 16h
mov ah, 4ch
int 21h
end


Может кто-нибудь чего-нибудь знает?  ???

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница