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

Int 21h ; ввести рядок

and ax,ax ; чи введено будь-які символи?

jz Done ; ні, перехід на кінець програми

mov cx,ax ; записати кількість введених символів в регістр CX

push cx ; запам’ятати регістр CX у стеку

mov bx,OFFSET integer ; занести у BX адресу введеного рядка

mov si,OFFSET ReverseString; занести у SI адресу рядка результату

add si,cx

dec si ; адреса кінця рядка результату

m1:

mov al,[bx] ; отримати наступний символ введеного рядка

mov [si],al ; записати цей символ у рядок результату

inc bx ; вказівник на наступний символ введеного рядка

dec si ; вказівник на наступний символ рядка результату

loop m1 ; виконати цикл

pop cx ; отримати зі стеку довжину рядка

mov ah,40h ; номер функції DOS для виведення даних

mov bx,1 ; дескриптор дисплея

mov dx,OFFSET ReverseString ; адреса рядка для виведення

int 21h ; надрукувати рядок

Done:

mov ah,4ch ; номер функції DOS для завершення програми

int 21h ; завершити програму та вийти у DOS

END ; кінець програми

Написати програму на мові Assembler, яка підраховує кількість одиничних бітів у введеному з клавіатури слові.

.8086

.model small

.stack 100h

.data

maxl = 12

S db maxl,?,maxl dup ('0') ;максимальна довжина рядка (буфер для рядка)

C db 0

msg db 'Input word :$'

.code

.startup

mov ah,9h ;функція виведення на екран

lea dx,msg

int 21h

mov ah,0AH ;функція введення з клавіатури

lea dx,S

int 21h

xor cx,cx

mov cl,byte ptr s+1 ;реальна довжина рядка, як кількість повторень циклу

lea bx,s+2-1

add bx,cx

m1: push CX ; значення заносимо в стек щоб організувати вкладений цикл;

mov al,byte ptr[bx]

mov cx,8 ;кількість повторень внутрішнього циклу

m2: shr al,1 ;зсув вправо

jnc m3 ;якщо в CF 0 то не збільшуємо суму

inc c

m3: loop m2

pop cx

loop m1

sub c,3 ;віднімаємо кількість одиничних бітів коду клавіші ENTER

.exit 0

end @startup

Ввести рядок з клавіатури і порахувати кількість символів у слові.

.8086

.model small

.stack 100h

.data

maxl = 30

S db maxl,?,maxl dup ('0') ;макс. довжина рядка,реальна довж.,буфер для рядка

C db 0

msg db 'Input string :$'

.code

.startup

mov ah,9h ;функція виведення на екран

lea dx,msg

int 21h

mov ah,0AH ;функція введення з клавіатури

lea dx,S

int 21h

xor cx,cx

mov al,byte ptr s+1 ;кількість символів у слові

mov c,al

.exit 0

end @startup

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