Есть програма, которая считатет пример X/2Y+7, но мне нужно убрать символ, который появляется при выводе ответа примера(после строк где нужно ввести ху)(смайлик, сердечко и т д.
). С чем связано появление этого символа? Например, появляется при х=2 y=2.
.model small
.data
clear db 80 dup(0)
FIRST_STRING DB '',0Dh, 'this program gives you a result of X/2Y+7 ', 0Ah,0Dh, 'insert x then y by pressing enter(x and y must be more then 1 )', 0Ah,0Dh, 'w removes variables, after program is done press e to exit', 0Ah,0Dh, '$'
.code
data segment
clear1 db 1500 dup(0) ; буфер від рандому
StringEnd = $-1 ; вказує на символ '$'
stringx dw 1 dup(?) ; змінна X
stringy dw 1 dup(?) ; змінна Y
empty db '$' ; пустишка
data ends
code segment
assume cs:code,ds:data
start:
MOV AH,0 ; номер функції установки режиму дисплея
MOV AL,2 ; код режиму 80 * 25 чорно-білого
INT 10H ; очищення екрана
mov AX,03h
int 10h
; --- установка курсору в рядок 5, стовпець 28
MOV AH,2 ; номер функції
MOV BH,0 ; номер сторінки
MOV DH,0 ; рядок
MOV DL,0 ; стовпець
INT 10H ; позиціонуємо курсор
mov AX,03h
int 10h
; --- вивід рядка
MOV AH,9 ; номер функції виведення рядка
LEA DX, FIRST_STRING ; завантажуємо адресу першого рядка
INT 21H ; друкуємо рядок з позиції курсору
MOV AH,2 ; номер функції
MOV BH,0 ; номер сторінки
MOV DH,0 ; рядок
MOV DL,0 ; стовпець
JMP nextnumx
nextnumx:
mov ah,01h
mov al,00h
int 21h
cmp al,2fh
jl kostulb
cmp al,31h
jl fol
cmp al,39h
ja fol
sub al,31h
xor ah,ah
xchg ax,bx
mov dx,0Ah
mul dx
add bx,ax
mov stringx,bx
jmp nextnumx
kostulb:
mov bh,00h
mov bl,00h
JMP nextnumy
nextnumy:
mov ah,01h
int 21h
cmp al,2fh
mov stringy,bx
jl formula_y
cmp al,31h
jl fol
cmp al,39h
ja fol
sub al,30h
xor ah,ah
xchg ax,bx
mov dx,0Ah
mul dx
add bx,ax
mov stringy,bx
jmp nextnumy
fol:
jmp smgt
outp:
ret
formula_y:
mov AH,00h
mov AL,00h
mov dh,00h
mov dl,00h
mov ax,stringx
mov Bx,stringy
div bx
je negative
add ax, 7
mov stringx,ax
jmp S1tart
negative:
call exit
S1tart1:
std
lea di,StringEnd-1
mov ax,stringx
mov cx,10
jmp Repeat11
Repeat11:
xor dx,dx
div cx
xchg ax,dx
add al,'0'
stosb
xchg ax,dx
or ax,ax
jne Repeat11
mov ah,9
mov al,0ah
mov al,0dh
mov dh,00h
mov dl,00h
mov dx,09A5h
int 21h
mov ah,9
mov al,0ah
mov al,0dh
mov bh,00
mov bl,00
mov stringx,bx
lea dx,[di+1]
int 21h
jmp PRESS_KEY
S1tart:
std
lea di,StringEnd-1
mov ax,stringx
mov cx,10
jmp Repeat1
Repeat1:
xor dx,dx
div cx
xchg ax,dx
add al,'0'
stosb
xchg ax,dx
or ax,ax
jne Repeat1
mov ah,9
mov al,0ah
mov al,0dh
lea dx,[di+1]
int 21h
jmp PRESS_KEY
PRESS_KEY:
mov ah,00h
mov al,00h
mov dh,00h
mov dl,00h
MOV AH,2
MOV BH,0
MOV DH,8
MOV DL,0
INT 10H
MOV AH,1
INT 21H
CMP AL, 65h
JE exit
CMP AL, 77h
JE smgt
JMP PRESS_KEY
smgt:
mov ah,00
mov al,00
mov bh,00
mov bl,00
mov ch,00
mov cl,00
mov dh,00
mov dl,00
mov di,00
jmp start
exit:
.exit
code ends
end start