Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Подпрограмма ввода и вывода целых чисел на Ассемблере IBM




На языке Си для int, float

Программа на языке программирования Си для int

#include "stdafx.h"

#include <iostream>

#include <conio.h>

using namespace std;

const int N = 4;

void raschet(int a, int c, int d[])

{int g, k, l, z;

int Y = 0;

g = 2 * c;

k = a*a + 1;

cout << "g = " << "2 * " << c << " = " << g << endl;

cout << "k = " << a*a << " + 1" << " = " << k << endl;

for (int i = 1; i <= N; i++)

{l = d[i] / 4;

cout << i << ") " << "l[" << d[i] << "] = " << d[i] << " / 4 = " << l << endl;

z = (g - l) / k;

cout << " z[" << d[i] << "] = " << z << endl;

Y = Y + z;

cout << endl;}

cout << "Y = " << Y << endl;}

int main()

{setlocale(LC_ALL, "Russian");

int a, c, d[N];

cout << "Введите a = ";

cin >> a;

cout << "Введите с = ";

cin >> c;

cout << "Введите элементы массива" << endl;

for (int i = 1; i <= N; i++)

{cout << "d[" << i << "] = ";

cin >> d[i];}

raschet(a, c, d);

_getch();

return 0;}

Программа на языке программирования Си для float

#include "stdafx.h"

#include <iostream>

#include <conio.h>

using namespace std;

const int N = 4;

void raschet(float a, float c, float d[])

{float g, k, l, z;

float Y = 0;

g = 2 * c;

k = a*a + 1;

cout << "g = " << "2 * " << c << " = " << g << endl;

cout << "k = " << a*a << " + 1" << " = " << k << endl;

for (int i = 1; i <= N; i++)

{l = d[i] / 4;

cout << i << ") " << "l[" << d[i] << "] = " << d[i] << " / 4 = " << l << endl;

z = (g - l) / k;

cout << " z[" << d[i] << "] = " << z << endl;

Y = Y + z;

cout << endl;}

cout << "Y = " << Y << endl;}

 

 

ВЛГУ. 230100.7.1.00 ПЗ


int main()

{setlocale(LC_ALL, "Russian");

float a, c, d[N];

cout << "Введите a = ";

cin >> a;

cout << "Введите с = ";

cin >> c;

cout << "Введите элементы массива" << endl;

for (int i = 1; i <= N; i++)

{cout << "d[" << i << "] = ";

cin >> d[i];}

raschet(a, c, d);

_getch();

return 0;}

Блок схема

нет
z=(2*c-d[i]/4)/(a*a-1) y=y+z
да
i<5
i=0, y=0
Ввод a, c, d[i]

 

 

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 

 


 

 

Вывод y

 


 

ВЛГУ. 230100.7.1.00 ПЗ


3. Программирование

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 

Программа на Ассемблере УМ

Ex77 start 0

lda c

mul c2

sta p

ldx c0

lda c0

usl comp c12

jgt art

jeq art

jsub inc

rmo x,a;i:=i+1

add c3

rmo a,x

j usl

art lda y

hlt

c word 20

e word 2

c0 word 0

c1 word 1

c3 word 3

c4 word 4

c12 word 12

c2 word 2

y word 0

d word 20

word 12

word 4

word -16

o resb 3

k resb 3

p resb 3

inc lda e

mul e

add c1

sta k

lda d,x

div c4

sta o

lda p

sub o

div k

add y

sta y

rsub

end Ex77

 

ВЛГУ. 230100.7.1.00 ПЗ


Блок схема

 

inc

 

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 

 

ВЛГУ. 230100.7.1.00 ПЗ


Подпрограмма ввода и вывода целых чисел на Ассемблере IBM

Подпрограмма ввода

Блок схема

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 

 

ВЛГУ. 230100.7.1.00 ПЗ


Подпрограмма на языке программирования Ассемблер IBM PC

InputInt proc

mov ah, 0ah

xor di, di

mov dx, offset buff; адрес буфера

int 21h; принимаем строку

mov dl, 0ah

mov ah, 02

int 21h

; выводим перевод строки и обрабатываем

; содержимое буфера

mov si, offset buff+2; берем адрес начала строки

cmp byte ptr [si], "-"; если первый символ минус

jnz ii1

mov di, 1; устанавливаем флаг

inc si; и пропускаем его

ii1: xor ax, ax

mov bx, 10; основание сc

 

ii2: mov cl, [si]; берем символ из буфера

cmp cl, 0dh; проверяем не последний ли он

jz endin

; если символ не последний, то проверяем его

; на правильность

cmp cl, '0'; если введен неверный символ <0

jl er

cmp cl, '9'; если введен неверный символ >9

ja er

sub cl, '0'; делаем из символа число

mul bx; умножаем на 10

add ax, cx; прибавляем к остальным

inc si; указатель на следующий символ

jmp ii2; повторяем

er: mov dx, offset error; если была ошибка, то выводим сообщение об

; этом и выходим

mov ah,09

int 21h

int 20h; все символы из буфера обработаны число

; находится в ax

endin: cmp di,1; если установлен флаг, то

jnz ii3

neg ax; делаем число отрицательным

ii3: ret

error db "incorrect number$"

buff db 6,7 Dup(?)

InputInt endp

 

 

ВЛГУ. 230100.7.1.00 ПЗ
Изм.
Лист
№ докум.
Подпись
Дата
Лист
 

 


Подпрограмма на языке программирования Ассемблер IBM PC

 

Процедура вывода

Изм.
Лист
№ докум.
Подпись
Дата
Лист

OutInt proc near;=====Процедура вывода

test ax, ax; проверяем число на знак.

jns oi1

mov cx, ax; eсли оно отрицательное, выведем минус и

; оставим его модуль

mov ah, 02h

mov dl, '-'

int 21h

mov ax, cx

neg ax

oi1: xor cx, cx; количество цифр будем держать в CX

mov bx, 10; основание сс. 10 для десятеричной и т.п.

oi2: xor dx, dx

div bx; делим число на основание сс, в остатке

; получается последняя цифра

push dx; сразу выводить её нельзя, поэтому сохраним

; её в стэке

inc cx

; а с частным повторяем то же самое, отделяя

; от него очередную

test ax, ax; цифру справа, пока не останется ноль, что

;значит, что дальше

jnz oi2; слева только нули

 

;========Вывод=========

mov ah, 02h

oi3: pop dx

add dl, '0'; извлекаем очередную цифру, переводим её в

; символ и выводим

int 21h

loop oi3; повторим ровно столько раз, сколько цифр

; насчитали

ret

OutInt endp

 

 

ВЛГУ. 230100.7.1.00 ПЗ
 


блок схема

ВЛГУ. 230100.7.1.00 ПЗ
Изм.
Лист
№ докум.
Подпись
Дата
Лист
 

 






Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 434 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

2510 - | 2325 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.