Ввести 2 строки и вывести(неправильная запись массивов) - Assembler
Формулировка задачи:
Я удалил из кода все лишние макросы, чтобы выделить ту часть, где возникают проблемы. Я пытаюсь заполнить 2 строкового массива с помощью макроса InputString, каждая строка читается пока не встретит клавишу Enter. Когда я пытаюсь вывести эти 2 строки, то выясняется, что 2 строка записывается еще и в первую, заменяя собой ее элементы, начиная с 1 элемента.
Скриншот того как это выглядит я приложил(на то, что выводится дальше не обращайте внимания - там холостой ход)
Листинг программы
- .model small
- .stack 100h
- .data
- str1 db dup 255 (?)
- str2 db dup 255 (?)
- c1 db ?
- c2 db ?
- msg1 db 10,13,"Input sting: $"
- msg2 db 10,13,10,13,"Input substring: $"
- msg3 db 10,13,"Position : $"
- none db 10,"none $"
- msgErFind db 10,"Substring is not found! $"
- Press db 10,13,10,13,"Press any key...$"
- msgErLen db 10,13,"Error! Substring is longer than string. $"
- out1 db 10,13,"sting: $"
- out2 db 10,13,"substing: $"
- i dw 0
- j dw 0
- n1 dw 0
- p dw 0
- n2 dw 0
- n3 dw 0
- f dw 0
- .code
- exit macro
- lea dx,Press
- mov ah,09h
- int 21h
- mov ah,00h
- int 16h
- mov ax,4c00h
- int 21h
- endm
- inputString macro str, msg, i
- lea dx,msg
- mov ah,09h
- int 21h
- local while
- local break
- mov si,0
- while:
- mov ah,01h
- mov al,00h
- int 21h
- cmp al,0Dh
- je break
- mov [str+si],al
- inc si
- jmp while
- break:
- mov i,si
- endm
- outp macro str, msg, n
- LOCAL put
- local exit
- lea dx,msg
- mov ah,09h
- int 21h
- mov cx,n ;cikl po 8 elementam
- mov si,0
- put:
- mov ah,02h ;func vivoda na ekran
- mov dl,[str+si];beret element massiva
- int 21h
- inc si
- loop put
- exit:
- endm
- start:
- mov ax,@data
- mov ds,ax
- inputString str1,msg1,n1
- inputString str2,msg2,n2
- ;****************************************
- outp str1,out1,n1
- outp str2,out2,n2
- ;*******************************************
- next:
- exit
- end start
Решение задачи: «Ввести 2 строки и вывести(неправильная запись массивов)»
textual
Листинг программы
- str1 db 255 dup(?)
- str2 db 255 dup(?)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д