Firetheestle
@Firetheestle

Почему такой странный вывод?

Дали задачку:
Ввести 2 строки символов и зарезервировать место под третью строку. Сравнить первые две и если в них есть разные буквы то записать эти буквы в третью строку.
Вот код:
include io.asm
Sseg segment stack 
	db 256 dup(?)
Sseg ends
Dseg segment
v1 db 0dh,0ah,'Vvedite stroku N1: $'
v2 db 0dh,0ah,'Vvedite stroku N2: $'
s1 db 5 dup(?)
s2 db 5 dup(?)
s3 dw 5 dup(?)
Dseg ends
Cseg segment 
		assume cs:Cseg,DS:Dseg,SS:Sseg,ES:Dseg
start:
		mov ax,Dseg
		mov ds,ax
		mov es,ax
		
		cld
		lea dx,v1
		outstr 
		mov cx,5
		mov si,0
vvod1:  
		inch s1[si]
		inc si
		loop vvod1
		
		newline
		
		lea dx,v2
		outstr
		mov cx,5
		mov si,0
vvod2:
		inch s2[si]
		inc si
		loop vvod2
		
		lea si,s2
		lea di,es:s1
	
		mov cx,5	
srav:
		repe cmps s1,s2
		mov bx,0
		dec di
		mov s3[bx],di
		inc di
		inc bx
		loop srav
		
		mov cx,5
		
	 	mov ah, 09	 
	 	lea dx, s3	 
	 	int 21h
		finish
Cseg ends 
end start

и почему-то он странно выводит ;C
be5dd2346faf47e39dd13d62437da7a1.png40506ac6ea234cefaa8538b159e7cc22.png
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
А вы можете объяснить, что у вас происходит здесь:
srav:
    repe cmps s1,s2
    mov bx,0
    dec di
    mov s3[bx],di
    inc di
    inc bx
    loop srav


Кроме того, для вывода строки функцией 9 int21 она должна заканчиваться символом '$'.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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