Как в данный код добавить ввод с клавиатуры? - 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 раза..

Объяснение кода листинга программы

  1. Переменные b, d, e, x инициализированы значением 0.
  2. Код находится в сегменте данных (д).
  3. Код находится в сегменте кода (с).
  4. Флаг направления ввода (DF) сброшен (не равен 0).
  5. Флаг дополнительного переноса (AC) сброшен (не равен 0).
  6. Флаг нулевого регистра (ZF) сброшен (не равен 0).
  7. Флаг знака (SF) сброшен (не равен 0).
  8. Флаг знака (OF) сброшен (не равен 0).
  9. Переменная b используется как буфер для ввода с клавиатуры.
  10. Переменная d используется как счётчик для цикла.
  11. Переменная e используется как счётчик для цикла.
  12. Переменная x используется как счётчик для цикла.
  13. Код выполняет ввод с клавиатуры с эхо (возвращает введённый символ).
  14. Переменная ah содержит код функции ввода с клавиатуры (1).
  15. Переменная cx содержит количество переменных (4).
  16. Переменная di используется как буфер для STOSB.
  17. Переменная bL содержит базовый адрес переменных (0).
  18. Переменная dL содержит базовый адрес переменных (0).
  19. Переменная eL содержит базовый адрес переменных (0).
  20. Переменная xL содержит базовый адрес переменных (0).

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы