mov di, ax ; адрес сроки, куда добавляем
mov al,0 ; ищем конечный нулевой байт
mov cx,0ffffh ; заведомо большая величина
repne scasb ; ищем al в es:di
dec di ; теперь di показывает на 0
mov si, dx ; адрес второй строки
copy_loop: копируем
lodsb
stosb
cmp al,0 ; проверим на последний 0
jne copy_loop
;LABA2
COD SEGMENT
ASSUME CS:COD,DS:DAT1,ES:DAT2
COPY PROC
MOV DI, AX ; адрес сроки, куда добавляем
mov AL,0 ; ищем конечный нулевой байт
mov CX,0FFFFH ; заведомо большая величина
REPNE SCASB ; ищем al в es:di
DEC DI ; теперь di показывает на 0
MOV SI, DX ; адрес второй строки
COPY_LOOP: ;копируем
LODSB
STOSB
CMP AL,0 ; проверим на последний 0
JNE COPY_LOOP
JE BREAK
BREAK:
RET
COPY ENDP
BEGIN: MOV AX,DAT1
MOV DS,AX
MOV AX,DAT2
MOV ES,AX
LEA AX, WORDS1
LEA DX, WORDS2
CALL COPY
MOV AX, 0900h
MOV DX, OFFSET WORDS1
INT 21H
MOV AX, 4C00H
INT 21H
COD ENDS
DAT1 SEGMENT
WORDS1 DB 'FIRST LINE$'
DAT1 ENDS
DAT2 SEGMENT
WORDS2 DB 'SECOND LINE$'
DAT2 ENDS
STK SEGMENT
DB 256 DUP(?)
STK ENDS
END BEGIN
;LABA2
COD SEGMENT
ASSUME CS:COD,DS:DAT1,ES:DAT2
COPY PROC
MOV SI, AX ; адрес сроки, куда добавляем
SEARCH_LOOP:
CMP BYTE PTR [SI], '$' ; ищем конечный байт
JE COPY_START
INC SI
JMP SEARCH_LOOP
COPY_START:
MOV DI, DX ; адрес второй строки
COPY_LOOP: ;копируем
MOV AL, ES:[DI]
INC DI
MOV [SI], AL
INC SI
CMP AL,'$' ; проверим на последний '$'
JNE COPY_LOOP
RET
COPY ENDP
BEGIN: MOV AX,DAT1
MOV DS,AX
MOV AX,DAT2
MOV ES,AX
LEA AX, WORDS1
LEA DX, WORDS2
CALL COPY
MOV AX, 0900h
MOV DX, OFFSET WORDS1
INT 21H
MOV AX, 4C00H
INT 21H
COD ENDS
DAT1 SEGMENT
WORDS1 DB 'FIRST LINE$'
DAT1 ENDS
DAT2 SEGMENT
WORDS2 DB 'SECOND LINE$'
DAT2 ENDS
STK SEGMENT
DB 256 DUP(?)
STK ENDS
END BEGIN
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.