Вывод на экран текста - 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

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

  1. Код начинает выполняться с команды mov ah,9h. Эта команда устанавливает регистр ah в значение 9h.
  2. Затем следует команда mov dx, offset EnterN. Эта команда устанавливает регистр dx в значение, содержащееся в переменной EnterN.
  3. Оба этих регистра используются в команде вывода на экран, которая будет выполнена далее в коде.
  4. Номер 9 в регистре ah соответствует символу 'T' в таблице символов ASCII.
  5. Переменная EnterN содержит адрес строки, которую нужно вывести на экран.
  6. В результате выполнения этих двух команд на экран будет выведен символ 'T', соответствующий символу, содержащемуся в переменной EnterN.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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