Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Програми на асемблері

Реферат Програми на асемблері





лів.

Дана матриця цілих байтових величин, розміром 4 * 5, необхідно підрахувати кількість нулів і замінити їх числом 0FFh. Під стек відведемо 256 байтів, програму оформимо як дві послідовні процедури: зовнішня (FAR) - це зв'язок з ОС, внутрішня (NEAR) - рішення поставленого завдання.


1. title prim.asm

2. page, 132

3. ; сегмент стека

4. Sseg segment para stack stack

. db 256 dup (?)

. Sseg ends

. ; сегмент даних

. Dseg segment para public data

. Dan db 0,2,5,0,, 91; адресу першого елемента масиву Dan

10. db 4,0,0,15,47;

11. db 24,15,0,9,55

12. db 1,7,12,0,4

13. Dseg ends

. ; сегмент кодів

15. Cseg segment para public code

16. essume cs: cseg, ds: dseg, ss: sseg

. start proc far

. push DS; для зв'язку

. push AX; з ОС

20. mov BX, Dseg; завантаження адреси сегмента даних

21. mov DS, BX; в регістр DS

22. call main

. ret

. start endp

. main proc near

. mov BX, offset Dan

. mov DL, 0; лічильник нулів в матриці

28. mov CX, 4; кількість повторень зовнішнього циклу

29. nz1: push CX

. mov SI, 0

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

32. nz2: push CX

. cmp byte ptr [BX + SI], 0

. jne mz

. mov byte ptr [BX + SI], 0FFh

. inc DL

. mz: inc SI

38. pop CX

39. kz2: loop nz2

40. add BX, 5; перехід до наступного рядка матриці

41. pop CX

42. kz1: loop nz1

43. add DL, 0; висновок на екран

44. mov AH, 6; кількості нулів

45. int 21h

46. ret

. main endp

. Sseg ends

. end start


Завдання вирішена за допомогою двох вкладених циклів, у внутрішньому здійснюється перегляд елементів поточного рядка (32-39), збільшення лічильника нулів і пересилання константи 0FFh в байт, що містить нуль. У зовнішньому циклі здійснюється перехід до наступного рядка очищенням регістра SI (рядок 30) і збільшенням регістра BX на кількість елементів у рядку (40).

Фізично остання команда програми (49) як параметр вказує мітку команди, з якою необхідно починати виконання програми.

Директива title задає заголовок кожній сторінці лістингу, заголовок може містити до 60 символів.

Директива page встановлює кількість рядків на сторінці лістингу - 1-й ...


Назад | сторінка 21 з 29 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка в середовищі Turbo Pascal програми обчислення суми елементів рядкі ...
  • Реферат на тему: Розробка програми перекладу введеного рядка тексту в послідовність кодів аб ...
  • Реферат на тему: Вплив точності виготовлення заготовки деталі &Кронштейн Ж7-УДН-20в.00.025& ...
  • Реферат на тему: Знаходження нулів функції y = f (x) методом Ньютона
  • Реферат на тему: Особливості вивчення тем "Внутрішня енергія", "Робота", ...