Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadachi_OOP_SPIOS_Assembler.doc
Скачиваний:
4
Добавлен:
28.10.2018
Размер:
314.37 Кб
Скачать

ASSAMBLER

1 Составить программу на Asm для очистки экрана

.model small

.stack 100h

.code

mov ax,0600h ; 6-я ф-ция

mov bh,07 ; атрибуты символов

mov cx,0000h ; 0x0 - верхний левый угол

mov dx,184fh ; 24x79 - нижний правый угол

int 10h

mov ah, 4ch

int 21h

end

2 Cоставить прграмму на Asm для преобразования строчных букв в прописные

Строчные – 61h – 7Ah

Прописные – 41h - 5Ah

a -> 01100001 ; z ->01111010

A-> 01000001 ; Z ->01011010

.model small

.stack 100h

.data

N equ 10

Stroka db ‘askdienckd’

.code

Start:

Mov ax,@data

Mov ds,ax

Xor ax,ax

Mov cx,N

Lea bx,Stroka

M1: mov al,[bx]

Cmp al,61h

Jb Next

Cmp al,7ah

Ja next

And al,11011111b

Mov [bx],al

Next:

inc bx

dec cx

jnz M1

exit:

mov ax,4c00h

int 21h

end start

3 Сост . Прогр . На Asm для нахождения в заданном массиве номера первого числа, равного нулю

.model small

.stack 100h

.data

Mas db 4,6,3,2,67,4,5,0,2,3,4

Len=$-Mas

Res db ?

.code

mov ax,@data

mov ds,ax

mov cx,Len

lea bx,Mas

xor ax,ax

L1: mov al,[bx]

inc ah

cmp al,0

je L2

inc bx

loop L1

L2: lea bx,Res

mov [bx],ah

mov ah, 4ch

int 21h

end

4 Написать на Asm программу для сохранения текстового экрана в буфере и последующей записи буфера в файл

Data segment

Buffer db 25 dup ( 80 dup (‘*’),13,10 )

Path db ‘c:\td\buffer.txt’,0

Handle dw ?

Data ends

Code segment

Assume cs:code, ds:data

Start proc far

Int 20h

Push ds

Sub ax,ax

Push ax

mov ax,data

mov ds,ax

push ds

pop es

lea di,buffer

cld

Mov bh , 0 ; указатель на страницу

Mov dh,0 ; указатель на строку

Cikl1: Mov dl,0 ; указатель на столбец

Mov cx,80

Cikl2:Mov ah,2h ; уст . курсора

Int 10h

Mov ah,8h ; чтение символа

Int 10h

Stosb ; es:di <- al

Inc dl

Loop Cikl2

Inc dh

Add di,2 ; проскочить 13 10

Cmp dh,25

jl Cikl1

Lea dx,path ; открыть файл

Mov al,1 ; вид доступа “запись”

Mov ah,3dh

Int 21h

Jc open_er

Mov handle , ax ; запись файлового индекса

Mov bx,ax

Sub cx,cx ; нулевое смещение

Sub dx,dx ; нулевое смещение

Mov al,2 ; смещ . от кон. ф.

Mov ah,42h ; уст. файловый указатель

Int 21h

Jc pointer_er

Mov ah,40h ; запись в файл 2050 байт из буфера

Mov bx,handle

Mov cx,2050

Lea dx,buffer

Int 21h

Jc outp_er

Cmp ax,2050

Jne full_disk

Mov bx,handle ; закрыть файл

Mov ah ,3eh

Int 21h

Full_disk:retf

Outp_er: retf

Pointer_er: retf

Open_er: retf

Start endp

Code ends

End start

5 В области памяти, адресуемой регистром si нах-ся цепочка семибитных кодов символов….

----------------------

Xor ah,ah

Start:

Mov al,[si]

And al,al ; установка флагов, отлв конца цепочки

Jz exit

Jp pf1 ; четное число единиц?

Or al,80h ; нет – записать 1 в старший бит

Pf1:

Mov [si],al ; вернуть символ в цепочку

Xor ah,al ; учесть в контрольном байте

Inc si

Jmp start

Exit:

Mov [si],ah

6 Перевод из одной системы исчисления в другую

.model small

.stack 100h

.data

number DW 47

base DW 16

str_res DB 'Результат: $'

.code

start:

my_proc PROC

mov ax, @Data

mov ds, ax

lea dx,str_res

mov ah,9h

int 21h

call convert

mov ah, 4ch

int 21h

my_proc ENDP

convert PROC

push ax

push cx

push dx

mov ax, @Data

mov ds, ax

mov ax, number

sub cx, cx

again:

sub dx, dx

div base

inc cx

cmp ax, 0

jne again

output:

pop dx

add dx, 30h

cmp dx

jle number_9

number_9:

mov ah, 2

int 21h

loop output

pop dx

pop cx

pop ax

ret

convert ENDP

7. Программа на Asm . Заданы две строки, скопировать в 3-ю те символы первой, кот . есть во второй. Определить число символов в результирующей строке.

.model small

.Stack 100h

.data

String1 db ‘ab123cd45’

String2 db ‘0123456789’

N1 db 9 ; длина 1-й строки

N1 db 10 ; длина 2-й строки

Res db 9 dup (?)

N db ?

.code

Mov ax,@data

Mov ds,ax

Lea di,res

Mov ax,0

Mov cx,n1

Lea si,string1

Fori: push cx

Lea bx,string2

Mov cx,n2

Forj: mov dl,[si]

Cmp dl,[bx]

Jne nextj

Mov [di],dl

Inc ax

Inc di

Jmp breakj

Nextj: inc bx

Loop forj

Breakj: pop cx

Inc si

Loop fori

Mov n,ax

Mov ah,4ch

Int21h

end

СПИОС

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]