Изменение программы ассемблера

Тема в разделе "WASM.ASSEMBLER", создана пользователем Kroleg, 29 июн 2011.

  1. Kroleg

    Kroleg New Member

    Публикаций:
    0
    Регистрация:
    28 июн 2011
    Сообщения:
    7
    Вот исходный текст программы: она решает выражение (D^2-A)^2\(A^2+B)-20, где значения чисел A, B и D заданы по условию. Как переделать эту программу, чтобы мы сами с клавиатуры вписывали значения A, B и D при выполнении программы?

    sseg segment stack 'stack'
    db 128 dup (?)
    sseg ends

    dseg segment 'data'
    text1 db 'Programa zarabotala', 13, 10, '$'
    text2 db '((D^2-A)^2\D^2+B)-20 = $'
    A dw 0Ah
    B dw 4
    D dw -23; или -17h
    rez dw ?
    dseg ends

    cseg segment 'code'
    assume cs:cseg, ds:dseg, ss:sseg

    start proc far
    mov ax, dseg
    mov ds, ax

    m1: lea dx, text1

    call WrStr

    mov dx,offset text2

    call WrStr

    m2: mov ax,A
    mul ax
    add ax,B
    mov bx,ax
    mov ax,D
    imul ax
    sub ax,A
    mul ax
    div bx
    sub ax,20
    mov rez, ax

    m3: xor cx,cx
    mov bx,10
    mod1: xor dx,dx
    div bx
    push dx
    inc cx
    or ax,ax
    jnz mod1
    print:
    pop dx
    add dl,30h
    mov ah,2 ; функції 02
    int 21h
    loop print

    m4: mov ah,1
    int 21h
    mov ah, 4ch
    Int 21h
    Start endp

    WrStr proc near
    mov ah, 09h
    int 21h
    ret
    WrStr endp

    Cseg ends
    end start
     
  2. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Ввод текста с клавиатуры (смотри в документацию про буфер текста):
    Код (Text):
    1. mov dx, <text buffer address>
    2. mov ah, 0Ah
    3. int 21h
    Но, это будет текст, который надо перевести в регистр такими шагами:

    1. СУММА=0
    2. Берём символ из строки (например, это будет '8')
    3. Вычитаем из символа 30h ('0') - это даст 8 в бинарном исчислении
    4. СУММА = СУММА*10 + БИНАРНЫЙ СИМВОЛ из шага #3
    5. Повторить с шага #2 пока не закончится текст