Задать вопрос
@Q1que

Как убрать странные символы?

Есть програма, которая считатет пример X/2Y+7, но мне нужно убрать символ, который появляется при выводе ответа примера(после строк где нужно ввести ху)(смайлик, сердечко и т д. 637c9a4a6f00f666934962.jpeg). С чем связано появление этого символа? Например, появляется при х=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
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Значит у вас не стоит нулевой символ или что у вас там сигнализирует, что конец текста для вывода. Вот он у вас и продолжает выводить весь мусор из памяти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы