Вывод на экран текста - Assembler
Формулировка задачи:
Задача стоит ввести 'N' цифр с клавиатуры и умножить те, которые больше 'c' и меньше 'd' . У меня не хочет виводить сообщение на екран , даже самых банальных. Помогите найти что я делаю не так.
Код програмы:
И даже такой код не выводит сообщение :
.MODEL small .STACK 100h .DATA EnterN DB 'Enter N =$' Result DB 'Result=$' EnterData DB 'Enter a =$' Error DB "Incorrect number$" Buff DB 6,7 Dup(?) C10 DB 10 c Dw 1 d Dw 6 ;Arr dw 100 dup (0) .CODE START: mov ax, @data mov ds , ax mov al,9h mov bx, offset EnterN int 21h call InputInt mov cx ,ax mov ax, 1 push ax mov bx, 0 begin: ;mov ax, Arr[bx] mov al, 9h mov bx, offset EnterData int 21h call InputInt mov dx ,[c] cwd cmp ax ,dx jb bed mov dx, [d] cwd cmp ax, dx ja bed xor dx,dx pop dx imul dx push ax bed: add bx ,2 loop begin mov ah,9h mov bx, offset Result int 21h pop ax call OutInt mov ah,4ch int 21h OutInt proc test ax, ax jns oi1 mov cx, ax mov ah, 02h mov dl, '-' int 21h mov ax, cx neg ax oi1: xor cx, cx mov bx, 10 oi2: xor dx,dx div bx push dx inc cx ; количиство цифр test ax, ax jnz oi2 mov ah, 02h oi3: pop dx add dl, '0' int 21h loop oi3 ret OutInt endp InputInt proc mov ah,0ah xor di,di mov dx,offset Buff int 21h mov dl,0ah mov ah,02 int 21h mov si,offset Buff+2 cmp byte ptr [si],"-" jnz ii1 mov di,1 inc si ii1: xor ax,ax mov bx,10 ii2: mov cl,[si] cmp cl,0dh jz endin cmp cl,'0' jl er cmp cl,'9' ja er sub cl,'0' mul bx add ax,cx inc si jmp ii2 er: mov dx, offset Error mov ah,09 int 21h mov ah,4ch int 21h endin: cmp di,1 jnz ii3 neg ax ii3: ret InputInt endp end START
.MODEL small .STACK 100h .DATA EnterN DB 'Enter N =$' .CODE START: mov ax, @data mov ds , ax mov al,9h mov bx, offset EnterN int 21h mov ah,4ch int 21h end START
Решение задачи: «Вывод на экран текста»
textual
Листинг программы
mov ah,9h mov dx, offset EnterN
Объяснение кода листинга программы
- Код начинает выполняться с команды mov ah,9h. Эта команда устанавливает регистр ah в значение 9h.
- Затем следует команда mov dx, offset EnterN. Эта команда устанавливает регистр dx в значение, содержащееся в переменной EnterN.
- Оба этих регистра используются в команде вывода на экран, которая будет выполнена далее в коде.
- Номер 9 в регистре ah соответствует символу 'T' в таблице символов ASCII.
- Переменная EnterN содержит адрес строки, которую нужно вывести на экран.
- В результате выполнения этих двух команд на экран будет выведен символ 'T', соответствующий символу, содержащемуся в переменной EnterN.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д