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

Int 21h ; Вызов 21 прерывания dos

mov ah,4ch ; Выход в DOS в 21 прерывании

int 21h

start endp

codesg ends

end begin

  1. Напишите программу, которая запрашивает у пользователя имя и выводит на экран две строки, в первой строке находятся все буквы, которые стоят на чётных позициях, во второй строке находятся все буквы, которые стоят на нечётных позициях. Выполните трассировку программы.

codesg segment para 'code'

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

org 100h

begin: jmp start

string db 256 dup ('$')

chetn db 256 dup ('$')

nechetn db 256 dup ('$')

novstr db 13, 10, '$' ; переход на новую строку

start:

mov ah,0ah ;запрос функции ввода

lea dx,string ;загрузка параметров

int 21h ;вызов 21 прерывания DOS

mov ax, 00h

mov bx, 00h

mov di, 00h

l2:

mov al, byte ptr [string+2+bx] ;вычисление чётных

mov [chetn+di], al

inc di

add bx,2

add cx,1

cmp al,24h

jnz l2

mov bx, 01h

mov di, 00h

mov ax, 00h

l3:

mov al, byte ptr [string+2+bx] ;вычисление нечётных

mov [nechetn+di], al

inc di

add bx,2

add cx,1

cmp al,24h

jnz l3

lea dx, novstr ; переход на новую строку

mov ah,09h

int 21h

lea dx, chetn ; четные символы

mov ax, 00h

mov ah,09h

int 21h

lea dx, novstr ; переход на новую строку

mov ah,09h

int 21h

lea dx, nechetn; нечетные символы

mov ax, 00h

mov ah,09h

int 21h

mov ah,4ch

int 21h

codesg ends

end begin

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

codesg segment para 'code'

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

org 100h

begin:

call start1

message3 db 'Segodnya sreda?-[Y/N]:','$'

message1 db 'Segodnya ne sreda','$'

message2 db 'Segodnya sreda','$'

start1 proc near

mov ah, 00h ;Установка видеорежима

mov al, 03h ; Стандартный цветной текст 80х25

int 10h

Next_key:

mov dx,offset message3

mov ah, 09h

int 21h

mov ah,10h

int 16h

cmp al,'Y'

jz IsSreda

jmp sss

sss: cmp al,'N'

jz IsNeSreda

jmp Next_key

IsSreda:

mov dx,offset message2

jmp start

IsNesreda:

mov dx,offset message1

jmp start

start:

mov ah,09h

int 21h

mov ah,4ch

int 21h

start1 endp

codesg ends

end begin

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

codesg segment para 'code'

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

org 100h

begin:

call start

message db 'Введите Ваше имя: ', '$'

string label byte ;Список параметров

symb db 15 ;Максимальная длина

real db ? ;Реальная длина

all db 20 dup (?),'$' ; Введенные символы

start proc near

mov ah, 00h ;Установка видеорежима

mov al, 03h ; Стандартный цветной текст 80х25

int 10h

mov dh, 12 ; Установка позиции курсора

mov dl, 02

mov bh, 00

mov ah, 02h ; Вызов функции установки курсора

int 10h

mov ah, 09h ; Вызов функции вывода

lea dx, message ; Загрузка адреса строки сообщения