Вот исходный текст программы: она решает выражение (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
Ввод текста с клавиатуры (смотри в документацию про буфер текста): Код (Text): mov dx, <text buffer address> mov ah, 0Ah int 21h Но, это будет текст, который надо перевести в регистр такими шагами: 1. СУММА=0 2. Берём символ из строки (например, это будет '8') 3. Вычитаем из символа 30h ('0') - это даст 8 в бинарном исчислении 4. СУММА = СУММА*10 + БИНАРНЫЙ СИМВОЛ из шага #3 5. Повторить с шага #2 пока не закончится текст