Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи(решённые)2.3.4 лабы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
103.22 Кб
Скачать
  1. Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран в pамке. Выполните трассировку программы.

.model small

.stack 100h

.const

msg db "Enter string:", "$"

crlf db 0dh, 0ah, "$"

.data

max db 10

len db ?

all db 10 dup("?")

.code

main:

mov ax, @data

mov ds, ax

mov dx, offset msg

mov ah, 09h ; BbIBOD CTPOKU

int 21h

mov dx, offset crlf

mov ah, 09h

int 21h

mov dx, offset max

mov ah, 0ah

int 21h

xor bx, bx

mov bl, len

mov all[bx], "$"

mov ah, 00h

mov al, 03h

int 10h

xor cx, cx

mov cl, len

inc cx

inc cx

mov dl, "="

m1:

mov ah, 02h

int 21h

loop m1

mov dx, offset crlf

mov ah, 09h

int 21h

mov dl, "|" ; PAMKA

mov ah, 02h

int 21h

mov dx, offset all

mov ah, 09h

int 21h

mov dl, "|"

mov ah, 02h

int 21h

mov dx, offset crlf

mov ah, 09h

int 21h

xor cx, cx

mov cl, len

inc cx

inc cx

mov dl, "="

m2:

mov ah, 02h

int 21h

loop m2

mov ah, 04ch

int 21h

end main

  1. Напишите программу, запрашивающую у оператора строку str1. Необходимо скопировать в строку str2 последний символ из str1 три раза. Выполните трассировку программы.

.model small

.stack 100

.data

message DB 'Enter the string:',10,13,'$'

maxlength DB 11

curlength DB ?

s1 DB 11 DUP(?)

s2 DB 4 DUP(?)

new_line DB 10,13,'$'

.code

ASSUME DS:@data, SS:@stack, CS:@code

begin:

PUSH DS

PUSH 0

MOV AX, @data

MOV DS, AX

MOV AH, 9

LEA DX,message ;выводим на экран

;MOV DX, OFFSET message ;строку message с помощью

INT 21h

MOV AH, 0Ah ;вводим строку s1,

LEA DX, maxlength ;указывая на байт, содержащий

INT 21h

MOV BL,BYTE PTR curlength ;помещаем в BX количество введенных

MOV BH, 0

MOV Al, s1 [BX-1] ;копируем последний символ из s1 в s2

MOV s2 ,Al

MOV Al, s1 [BX-1] ;копируем последний символ из s1 в s2

MOV s2+1 ,Al

MOV Al, s1 [BX-1] ;копируем последний символ из s1 в s2

MOV s2+2 ,Al

MOV s2+3, '$' ;помещаем символ $ в конец строки s2

MOV s1[BX], '$' ;заменяем символ ENTER на $

MOV AH, 9 ;выводим строку

MOV DX, OFFSET s1 ;s1

INT 21h

MOV AH, 9 ;выводим строку

LEA DX, new_line ;new_line

INT 21h ;на экран

MOV AH, 9 ;выводим строку

LEA DX, s2 ;s2

INT 21h ;на экран

MOV AH, 9 ;выводим строку

MOV DX, OFFSET new_line ;new_line

INT 21h ;на экран

MOV AH, 4Ch ;завершаем программу с помощью

INT 21h ;функции 4c прерывания 21h

end begin

end

  1. Напишите программу, запрашивающую у оператора строку, а затем выводящую каждое слово в отдельной строке. Выполните трассировку программы.

stacksg segment para stack 'Stack'

dw 32 dup(?)

stacksg ends

datasg segment para 'Data'

message db 'vvedite predlojenie: $'

string label byte

max db 50

len db ?

str db 100 dup ('$')

k db 1

datasg ends

codesg segment para 'Code'

begin:

assume cs:codesg, ds:datasg, ss:stacksg, es:datasg

push ds

sub ax,ax

push ax

mov ax,datasg

mov ds,ax

mov ah,09h

lea dx,message

int 21h

mov ah, 0ah

lea dx, string

int 21h

mov bx,offset str

mov dh,k

mov dl,00

mov bh,00

mov ah,02h

int 10h

inc k

next: mov dl,[bx]

mov ah,02h

int 21h

cmp dl,0Dh

je exit

inc bx

cmp dl,' '

jne next

mov dh,k

mov dl,00

mov bh,00

mov ah,02h

int 10h

inc k

jmp next

exit: mov ah, 8h

int 21h

mov ah,4ch

int 21h

codesg ends

end begin