Читайте также:
|
|
codesg segment para 'code'
assume cs:codesg, ds:codesg, ss:codesg, es:codesg
org 100h
begin: call start
message db 'Vvedite stroky: ', '$'
string label byte;Список параметров
symb db 19;Максимальная длина
real db?;Реальная длина
all db 20 dup (?),'$'; Введенные символы
start proc near
mov ah, 00h;Установка видеорежима
mov al, 03h; Стандартный цветной текст 80х25
int 10h
mov dh, 01; Установка позиции курсора
mov dl, 01
mov bh, 00
mov ah, 02h; Вызов функции установки курсора
int 10h
mov ah, 09h; Вызов функции вывода
lea dx, message; Загрузка адреса строки сообщения
int 21h; Вызов 21 прерывания DOS
lea dx, string; Загрузка адреса списка параметров
mov ah, 0ah; Запрос функции ввода
int 21h; Вызов 21 прерывания DOS
mov dh, 03; Установка позиции курсора
mov dl, 01
mov bh, 00
mov ah, 02h; Вызов функции установки курсора
int 10h
mov bl,real; Поместить указатель на конец строки
mov all[bx],'$'
lea dx, string+2
mov ah, 09h
int 21h; Вызов 21 прерывания DOS
mov ah,4ch; Выход в DOS в 21 прерывании
int 21h
start endp
codesg ends
end begin
3. Напишите программу, которая запрашивает у пользователя имя и выводит на экран две строки, в первой строке находятся все буквы, которые стоят на чётных позициях, во второй строке находятся все буквы, которые стоят на нечётных позициях. Выполните трассировку программы.
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
4. Напишите программу, вводящую строку запроса и ожидающую ответ. В зависимости от ответа “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
Дата добавления: 2015-08-17; просмотров: 168 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
по книге «100 великих чудес света» / Автор-составитель Н.А.Ионина. – М.: Вече, 1998. | | | Ввести с клавиатуры натуральное число. Найти сумму его первой и последней цифры и вывести на экран. Выполните трассировку программы. |