Как в данный код добавить ввод с клавиатуры? - Assembler
Формулировка задачи:
Как сделать что бы был ввод с клавы и вывод , что бы значение сам мог давать!
dseg segment b db 2 d db 3 e db 1 x db 1 y dw 2 dup (?) dseg ends cseg segment start: assume cs:cseg, ds:dseg mov ax,dseg mov ds,ax mov al,e xor ah,ah mul al mul e mov bx,ax mov al,2 mul bx mov bx, ax mov al,b xor ah,ah mul al add bx,ax mov al,d xor ah,ah mul al mov dx,ax mov al,x xor ah,ah mul al sub dx,ax mov al,5 xor ah,ah mul dx div bx mov si,0 mov y[si],dx mov y[si+2],ax cseg ends end start
Решение задачи: «Как в данный код добавить ввод с клавиатуры?»
textual
Листинг программы
b db 0 ; переменные.. d db 0 ; e db 0 ; x db 0 ; start: ; mov di,b ; приёмник для STOSB mov cx,4 ; кол-во переменных mov ah,1 ; ввод с эхо @@: ; int 21h ; and al,0fh ; переводим символ в число stosb ; запись в DI (DI автоматом увеличивается на 1) loop @b ; мотаем 4 раза..
Объяснение кода листинга программы
- Переменные b, d, e, x инициализированы значением 0.
- Код находится в сегменте данных (д).
- Код находится в сегменте кода (с).
- Флаг направления ввода (DF) сброшен (не равен 0).
- Флаг дополнительного переноса (AC) сброшен (не равен 0).
- Флаг нулевого регистра (ZF) сброшен (не равен 0).
- Флаг знака (SF) сброшен (не равен 0).
- Флаг знака (OF) сброшен (не равен 0).
- Переменная b используется как буфер для ввода с клавиатуры.
- Переменная d используется как счётчик для цикла.
- Переменная e используется как счётчик для цикла.
- Переменная x используется как счётчик для цикла.
- Код выполняет ввод с клавиатуры с эхо (возвращает введённый символ).
- Переменная ah содержит код функции ввода с клавиатуры (1).
- Переменная cx содержит количество переменных (4).
- Переменная di используется как буфер для STOSB.
- Переменная bL содержит базовый адрес переменных (0).
- Переменная dL содержит базовый адрес переменных (0).
- Переменная eL содержит базовый адрес переменных (0).
- Переменная xL содержит базовый адрес переменных (0).