Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Напишите программу, в которой вводятся целые числа c, d. Напишите макрокоманду определения max.

Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран. Выполните трассировку программы. | Ввести с клавиатуры натуральное число. Найти сумму его первой и последней цифры и вывести на экран. Выполните трассировку программы. | Напишите программу, запрашивающую у оператора строку, а затем выводящую каждое слово в отдельной строке. Выполните трассировку программы. | Ввести с клавиатуры натуральное число. Поменять порядок следования цифр в числе и вывести на экран. | C0 - Нижний левый угол B3 - Вертикальная линия | Дополните программу. При верном вводе пароля он появляется на экране через временную задержку разного цвета. | Дополните программу. Введите строку текста и выведите его по буквам в режиме телетайпа разными по цвету буквами. | Введите две строки. В случае если они одинаковые. Выводится сообщение о том что строки совпали, в противном случае выводится сообщение, о том что строки не совпадают. | Напишите программу, которая получает строку и слово. С помощью макроса определить входит ли данное слово в строку. | Дана длина ребра куба. Найти площадь полной поверхности этого куба. |


Читайте также:
  1. A. Организация, деятельность которой направлена на систематическое получение прибыли от пользования имуществом, продажи товаров, выполнения работ или оказания услуг.
  2. II. ПРОБЛЕМА, НА РЕШЕНИЕ КОТОРОЙ НАПРАВЛЕН ПРОЕКТ
  3. II. Трудные случаи определения вводных слов.
  4. KI. Числа
  5. Авторское вознаграждение. Порядок определения размера вознаграждения, порядок и сроки его выплаты
  6. Адаптация к социально-экономичиским условиям жизни у разных типов предпринимателей (в абсолютных числах и % от числа опрошенных в каждом типе).
  7. Адаптация к социально-экономичиским условиям жизни у разных типов предпринимателей в зависимости от уровня образования (в абсолютных числах и % от числа опрошенных в каждом типе).

Write MACRO mes;вывод сообщения на экран

LEA dx, mes

MOV ah, 09h

INT 21h

ENDM

;----------------------------------------------

WriteLine MACRO mes; вывод сообщения на экран

Write mes

ENDM

;---------------------------------------------

getch MACRO

MOV ah, 8h

int 21h

ENDM

;---------------------------------------------

Exit MACRO

MOV ah, 4ch

INT 21h

ENDM

;---------------------------------------------

ReadLine MACRO

LEA dx, Temp

MOV ah, 0ah

INT 21h

ENDM

;---------------------------------------------

newline macro; переход на новую строку

 

mov ah, 02h

mov dl,0ah

int 21h

 

mov ah,02h

mov dl,0dh

int 21h

endm

;----------------------------------------------

max macro f1,f2; максимальное число

local x,en

mov ax, f1

mov bx, f2

cmp ax,bx

 

ja x

 

mov dx, bx

jmp en

x: mov dx,ax

en:

 

endm

;----------------------------------------------

Convert MACRO num;перевод строки в число

LOCAL m1

 

XOR ax, ax

XOR cx, cx

MOV cl, real

MOV di, 10

LEA bx, Text

m1:

MUL di

MOV dl, [bx]

SUB dl, 48

ADD al, dl

INC bx

LOOP m1

 

MOV num, ax

ENDM

;---------------------------------------------

WriteInt MACRO num

LOCAL m1

LOCAL m2

 

XOR cx, cx

MOV di, 10

MOV ax, num

m1:

MOV dx, 0

DIV di

INC cx

PUSH dx

CMP ax, 0

JG m1

 

MOV ah, 2h

m2:

POP dx

ADD dl, 48

INT 21h

LOOP m2

ENDM

 

;----------------------------------------------

codesg segment para 'code'

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

org 100h

begin:

call start

 

cmsg db 'Vvedite c:', '$'

rc dw?

fmsg db 'Vvedite d:', '$'

rd dw?

str1 db 'Rezultat = ', '$'

 

maximum dw 0

 

Temp LABEL BYTE

len db 3

Real db?

Text db 4 DUP(0)

 

start proc near

;----------------------------------------------

WriteLine cmsg

ReadLine

Convert rc

newline

 

WriteLine fmsg

ReadLine

Convert rd

newline

 

max rc,rd

mov maximum,dx

WriteLine str1

WriteInt maximum

 

getch

exit

;-----------------------------------------------

start endp

codesg ends

end begin

 

4. Напишите программу, в которой вводятся целые числа а, b, c, d. Найти max{min(a, b), min(c, d)}, для чего написать макрокоманды определения max и min.

Write MACRO mes;вывод сообщения на экран

LEA dx, mes

MOV ah, 09h

INT 21h

ENDM

;----------------------------------------------

WriteLine MACRO mes; вывод сообщения на экран

Write mes

ENDM

;---------------------------------------------

getch MACRO

MOV ah, 8h

int 21h

ENDM

;---------------------------------------------

Exit MACRO

MOV ah, 4ch

INT 21h

ENDM

;---------------------------------------------

ReadLine MACRO

LEA dx, Temp

MOV ah, 0ah

INT 21h

ENDM

;---------------------------------------------

newline macro; переход на новую строку

 

mov ah, 02h

mov dl,0ah

int 21h

 

mov ah,02h

mov dl,0dh

int 21h

endm

;----------------------------------------------

min macro f1,f2; минимальное число

local x,en

mov ax, f1

mov bx, f2

cmp ax,bx

 

ja x

 

mov dx, ax

jmp en

x: mov dx,bx

en:

 

endm

;----------------------------------------------

max macro f1,f2; максимальное число

local x,en

mov ax, f1

mov bx, f2

cmp ax,bx

 

ja x

 

mov dx, bx

jmp en

x: mov dx,ax

en:

 

endm

;----------------------------------------------

Convert MACRO num;перевод строки в число

LOCAL m1

 

XOR ax, ax

XOR cx, cx

MOV cl, real

MOV di, 10

LEA bx, Text

 

m1:

MUL di

MOV dl, [bx]

SUB dl, 48

ADD al, dl

INC bx

LOOP m1

 

MOV num, ax

ENDM

;---------------------------------------------

WriteInt MACRO num

LOCAL m1

LOCAL m2

 

XOR cx, cx

MOV di, 10

MOV ax, num

m1:

MOV dx, 0

DIV di

INC cx

PUSH dx

CMP ax, 0

JG m1

 

MOV ah, 2h

m2:

POP dx

ADD dl, 48

INT 21h

LOOP m2

ENDM

 

;----------------------------------------------

codesg segment para 'code'

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

org 100h

begin:

call start

 

amsg db 'Vvedite a:', '$'

ra dw?

bmsg db 'Vvedite b:', '$'

rb dw?

cmsg db 'Vvedite c:', '$'

rc dw?

fmsg db 'Vvedite d:', '$'

rd dw?

str1 db 'Rezultat = ', '$'

 

minn1 dw 0

minn2 dw 0

maximum dw 0

maximumm dw?

Temp LABEL BYTE

len db 3

Real db?

Text db 4 DUP(0)

 

start proc near

;----------------------------------------------

WriteLine amsg

ReadLine

Convert ra

newline

 

WriteLine bmsg

ReadLine

Convert rb

newline

 

WriteLine cmsg

ReadLine

Convert rc

newline

 

WriteLine fmsg

ReadLine

Convert rd

newline

 

min ra,rb

mov minn1,dx

min rc,rd

mov minn2,dx

 

max minn1,minn2

mov maximum,dx

WriteLine str1

WriteInt maximum

 

getch

exit

;-----------------------------------------------

start endp

codesg ends

end begin

 

5. Вывести на экран своё имя, фамилию и группу, используя макрокоманду.

 

stacksg segment para stack 'Stack'

dw 32 dup(?)

stacksg ends

 

write macro str

mov ah,02h

mov dl,'*'

int 21h

 

mov ah,09h

lea dx,str

int 21h

endm

 

datasg segment para 'Data'

message db 'Hello World!$'

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 dh,0

mov dl,0

mov bh,0

mov ah,02h

int 10h

 

write message

mov ah,8

int 21h

mov ah,4ch

int 21h

codesg ends

end begin

 

6. Написать программу, которая спрашивала бы сокращенное имя, а печатала бы полное. В случае незнакомого имени – печатать "Я с Вами не знакома".

exit macro

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

int 21h

endm

 

vivod macro mm

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

lea dx, mm

int 21h

endm

 

iff macro string1,string2,i,net

local m1,m2

cld;Сравнение вперед

mov SI, offset string1;DS:SI ® strl

mov DI, offset string2;ES:DI ® str2

mov CX,i;Длина сравниваемых строк

repe cmpsb;Поиск различия в строках

je m1

jmp m2

m1: vivod string2;Переход, если строки совпадают

mov bx,10

m2: vivod net

endm

 

codesg segment para 'code'

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

org 100h

 

begin: call start

im1 db 'vadim','$'

im2 db 'maksim','$'

im3 db 'aleksandr','$'

im4 db 'vladik','$'

net1 db '','$'

net2 db 'Ia s vami ne znakom!!!','$'

 

mes db 'Vvedite sokrashennoi imia, a ia napishy polnoe: ', '$'

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

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

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

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

 

 

start proc near

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

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

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

 

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

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

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

 

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

mov dl, 01

mov bh, 00

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

int 10h

 

mov bl,real; Поместить указатель на конец строки

mov all[bx],'$'

mov bx,00; обнуляю флаг

 

iff string+2,im1,3,net1;проверяю каждое введенное слово на схожесть с именами

iff string+2,im2,4,net1

iff string+2,im3,5,net1

iff string+2,im4,4,net1

 

cmp bx,00;проверяю флаг

je m1

jmp m2

m1: vivod net2;если флаг обнулен тогда пишу что такого имени нет

m2: exit;выход из программы

 

start endp

codesg ends

end begin

 


Дата добавления: 2015-08-17; просмотров: 74 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Напишите программу, в которой вводятся целые числа а, b. Напишите макрокоманду определения min.| Ввести с клавиатуры натуральное число. Проверить будут ли его цифры все различны. Вывести на экран сообщение. Преобразование строки в число производить в макрокоманде.

mybiblioteka.su - 2015-2024 год. (0.028 сек.)