Объединение строк под компилятор TASM - Assembler

Узнай цену своей работы

Формулировка задачи:

Разработка программы объединения двух строк. Все исходные данные вводятся в программу с клавиатуры. Все результаты должны быть выведены на экран. Разработка программ должна осуществляться с использованием компилятора TASM.
DWORD ptr ;объявление сегмента стека
sseg segment stack
    db 256 dup (?)
sseg ends
 
;объявление сегмента данных
dseg segment
    str1    db      'str1 копируется в str2'
    ptr1    dd  str1
    len_str1=$-str1
    a_str1  dd      str1
    str2    db      len_str1 dup (' ')
    ptr2    dd  str2
    a_str2  dd      str2
dseg ends
 
;объявление сегмента кода
cseg segment
    assume cs:cseg, ds:dseg, ss:sseg
start:
    ;инициализация регистра DS
    xor ax, ax
    mov ax, dseg
    mov ds, ax
 
    mov     cx,len_str1
        lds     dx, [ptr1]
        les     dx, [ptr2]
        cld
rep     movsb
 
    ;команды завершения программы
    mov ah, 4ch
    int 21h
cseg ends
end start

Решение задачи: «Объединение строк под компилятор TASM»

textual
Листинг программы
; tasm dos exe #
comment *  Разработка программы объединения двух строк.
Все исходные данные вводятся в программу с клавиатуры.
Все результаты должны быть выведены на экран.
Разработка программ должна осуществляться с использованием компилятора TASM. *
;-------------------------------------
.286     
.model small
.stack 256
.data
str1 db 0Dh,0Ah,"введите первую строку",0Dh,0Ah,"$"
str2 db 255,?,255 dup(?)
str3 db 255,?,255 dup(?)
str4 db 0Dh,0Ah,"результат копирования первой строки во вторую",0Dh,0Ah,"$"
.code
start:  mov ax,3
    int 10h
    mov ax,@data
    mov ds,ax
    mov es,ax
    mov ah,9
    mov dx,offset str1
    int 21h
    mov ah,0Ah
    mov dx,offset str2
    mov di,dx
    add di,2
    int 21h
    mov word ptr [str1+10],"тв"
    mov word ptr [str1+12],"ро"
        mov ah,9
    mov dx,offset str1
    int 21h
    mov ah,0Ah
    mov dx,offset str3
    int 21h
        mov ah,9
    mov dx,offset str4
    int 21h
    mov ah,0
    mov al,str2+1
    add di,ax
    mov ch,0
    mov cl,str3+1
    mov si,offset str3+2
    rep movsb
    mov byte ptr [di],'$'
        mov ah,9
    mov dx,offset str2+2
    int 21h
    mov ah,0
    int 16h
;завершение программы
    mov ah,4Ch
    int 21h
end start

Объяснение кода листинга программы

  1. Объединение строк в языке ассемблера TASM:
    • Программа запрашивает две строки ввода с клавиатуры.
    • Первая строка вводится в буфер str1, вторая строка вводится в буфер str2.
    • Затем программа копирует первую строку во вторую, сохраняя длину строки.
    • Длина строки сохраняется в регистре dx.
    • Затем программа выводит на экран результат копирования первой строки во вторую.
    • Первая строка выводится на экран с помощью функции BIOS int 21h.
    • Затем программа завершается с помощью функции BIOS int 4Ch.
  2. Объединение строк в языке ассемблера TASM:
    • Программа запрашивает две строки ввода с клавиатуры.
    • Первая строка вводится в буфер str1, вторая строка вводится в буфер str2.
    • Затем программа копирует первую строку во вторую, сохраняя длину строки.
    • Длина строки сохраняется в регистре dx.
    • Затем программа выводит на экран результат копирования первой строки во вторую.
    • Первая строка выводится на экран с помощью функции BIOS int 21h.
    • Затем программа завершается с помощью функции BIOS int 4Ch.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы