К числу введённому с клавиатуры прибавить число - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно к числу введённому с клавиатуры прибавить число. Вроде бы всё просто до смеха. И разжёванно. Да что то не получается. Компилируется нормально, но при вводе числа выдаёт ошибку "Процессор NTVDM обнаружил не допустимую инструкцию". Может быть я что то не так складываю?
    title   a+3
    code    SEGMENT
    assume cs:code, ds:code
begin:  mov ax,code
    mov ds,ax
    mov cx,5    ;не более пяти цифр
    mov ah,1    
    int 21h ;ввод с клавиатуры в регистр AL
    cmp al,13   ;до нажатия Enter
    je  summ    
summ:   add al,3    
    mov dl,al
    mov ah,2    ;вывод из регистра dl
    int 21h 
    code    ends
        end begin

Решение задачи: «К числу введённому с клавиатуры прибавить число»

textual
Листинг программы
; masm dos com #
.model tiny
.286 
.code
org 100h
start:  mov ax,3
    int 10h
    mov si,offset string
    mov di,si
    mov ah,9
    mov dx,offset message
    int 21h
next:   mov ah,1    
    int 21h ;считывание символа с клавиатуры
    stosb
    cmp al,0Dh
    jne next   ;при нажатии на Enter переходим к сложению
    inc si
    and word ptr string[0],0F0Fh
    and word ptr string[3],0F0Fh
    mov bx,4
    mov cx,2    
    std 
a0: xor ax,ax
    lodsb
    add al,string[bx]
    aaa
    mov string[bx],al
    dec bx
    add string[bx],ah
    loop a0
    cld
    or word ptr string[bx],'00'
    or string[bx+2],'0'
    mov string[bx+3],'$'
    mov word ptr string[bx-2],0A0Dh
    mov ah,9
    mov dx,offset string
    int 21h
    mov ah,0
    int 16h
    ret
message db "Введите через пробел два двузначных числа и нажмите на Enter",0Dh,0Ah,"$"
string db 5 dup(0)
end start

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


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

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

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