Связь
<<  Безопасные летние каникулы для родителей Киа кворис екатеринбург фото  >>
Картинок нет
Картинки из презентации «Ассемблер, встроенный в ЯВУ. Соглашение о связях» к уроку информатики на тему «Связь»

Автор: KOROTIN. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Ассемблер, встроенный в ЯВУ. Соглашение о связях.ppt» со всеми картинками в zip-архиве размером 100 КБ.

Ассемблер, встроенный в ЯВУ. Соглашение о связях

содержание презентации «Ассемблер, встроенный в ЯВУ. Соглашение о связях.ppt»
Сл Текст Сл Текст
1Ассемблер, встроенный в ЯВУ. 16Пример. PROGRAM StringConversion; TYPE
Соглашение о связях. Паскаль-Ассемблер. ASCIIZString = ARRAY [0..255] OF Char; VAR
Ассемблер-С. Ассемблер-С++. a:ASCIIZString; s:String; {$L
2Ассемблер, встроенный в Pascal. STRTOASC.OBJ} PROCEDURE
Program AsmInPas; Var x,y,s:Integer; ASCIIZtoStr(a:ASCIIZString;VAR s:String);
Function Sum1(x,y:Integer):Integer; begin EXTERNAL; (* VAR len:integer; BEGIN
Sum1:=x+y; end; Function Len:=0; While (len<255) AND
Sum2(x,y:Integer):Integer; begin asm mov (a[len]<>Chr(0)) DO BEGIN
ax,x; add ax,y; mov @Result,ax end end; len:=len+1; s[len]:=a[len-1]; END;
Function Sum3(var x,y:Integer):Integer; s[0]:=chr(len) END; *).
begin asm les bx,x; mov ax,es:[bx]; les 17Пример. PROCEDURE
bx,y add ax,es:[bx]; mov @Result,ax end StrToASCIIZ(s:String; VAR a:
end; Function Sum4(x,y:Integer):Integer; ASCIIZString); EXTERNAL; (* VAR
Assembler; asm mov ax,x; add ax,y end; len,i:integer; BEGIN len:=length(s); FOR
Begin x:=1; y:=2; writeln(Sum1(x,y)); i:=1 TO len DO a[i-1]:=s[i];
writeln(Sum2(x,y)); writeln(Sum3(x,y)); a[len]:=Chr(0) END; *) PROCEDURE
writeln(Sum4(x,y)) End. ShowASCIIZ( a:ASCIIZString); VAR
3Ассемблер, встроенный в C. #include i:integer; BEGIN i:=0; WHILE (i<255)
<iostream.h> #include AND (a[i]<>Chr(0)) DO BEGIN
<string.h> char *str = "Upper Write(a[i]); i:=i+1 END; Writeln; END;
And Lower Case 12345"; char BEGIN s:='This is a test1';
cngcs(char x) { asm { mov al,x cmp al,’A’; StrToASCIIZ(s,a); ShowASCIIZ(a); s:='22';
jb ext; cmp al,’z’; ja ext cmp al,’Z’; ja ASCIIZtoStr(a,s); Writeln(s) END.
met; add al,20h; jmp ext } met: asm { cmp 18.model small,Pascal .code ; PROCEDURE
al,’a’; jb ext; sub al,20h} ext: } void ASCIIZtoStr(a:ASCIIZString, Var s:Srting;)
main() { char *ptr=str; cout << PUBLIC ASCIIZtoStr ASCIIZtoStr proc USES
"Before: " << str << ds,a:dword,s:dword les di,s ; загрузили
"\n"; while(*ptr) адрес приемника push di ; адрес s[0] в
*ptr++=cngcs(*ptr); cout << " стек inc di ; пропустили s[0] (под длину)
After: " << str << lds si,a ; адрес источника cld ; флаг
"\n"; } EXMPL. направления 0 xor cl,cl m1: cmp cl,255 ;
4Ограничения. Не могут использоваться Строка уже заполнена до конца je m2 lodsb
макро директивы. Не могут использоваться ; Символ из источника or al,al jz m2 ;
некоторые операторы ассемблера (mask, если 0 stosb ; символ в приемник inc cl
width, mod, shr и т.п.). Вставки делают jmp m1 m2: pop di mov es:[di],cl ; Длина в
программу непереносимой. Могут привести к s[0] ret ASCIIZtoStr endp.
потере эффективности из-за занятости 19; PROCEDURE StrToASCIIZ(s:Srting; Var
регистров, используемых компилятором для a:ASCIIZString) PUBLIC StrToASCIIZ
оптимизации (si и di). В Паскале: - не StrToASCIIZ proc ARG s:dword,a:dword USES
могут использоваться директивы описания ds les di,a ; приемник lds si,s ; источник
данных; - нельзя использовать регистры bp, cld ; флаг направления 0 xor cx,cx lodsb ;
sp, ss, ds. Длина в al mov cl,al jcxz m3 ; если пустая
5Соглашение о связях. Соглашение об строка repnz movsb m3: mov es:[di],cl ;
именах. Соглашение о вызовах. запись символа с кодом 0 ret StrToASCIIZ
6Соглашение об именах. Внешние имена: endp End Результат:
Паскаль, Фортран, Ассемблер - записываются 20C – ассемблер. Представление типов
прописными буквами С, C++ – дополняются аргументов. Unsigned char. Byte. Unsigned
лидирующим подчерком без изменения long. Dword. Char. Byte. Long. Dword.
регистра С++ - имена функций дополняются Enum. Word. Float. Dword. Unsigned short.
символом @ и именем класса, если оно есть, Word. Double. Dword. Short. Word. Long
а завершаются описанием аргументов, double. Tbyte. Unsigned int. Word. Near*.
начинающимся с символов $q и включающем Word. Int. Word. Far*. Dword.
одну букву для квалификатора, 21C – ассемблер. Типы возвращаемых
спецификатора и имени типа: x - const, значений. Unsigned char. Ax. Unsigned
pointer*, reference&, unsigned, long, long. Dx:ax. Char. Ax. Long. Dx:ax. Enum.
short, void, char, int, float, double. Ax. Float. ST(0). Unsigned short. Ax.
7Пример. class complex { double re,im; Double. ST(0). Short. Ax. Long double.
public: complex(double r=0.,double i=0.) { ST(0). Unsigned int. Ax. Near*. Ax. Int.
re=r; im=i; } operator double() { return Ax. Far*. Dx:ax.
sqrt(re*re+im*im); } complex 22Пример: ассемблер – с. .model small
operator+(double b){ return .stack 256 .data filda dw 1 fildb dd 1.5
complex(re+b,im); } complex .code _main proc PUBLIC _main EXTRN
operator+(complex a) { return @cproc$qif:proc ;EXTRN _cproc:proc mov
complex(re+a.re,im+a.im); } friend ax,@data mov ds,ax push fildb push filda
ostream& call @cproc$qif ;call _cproc add sp,6
operator<<(ostream&,complex& .exit 0 _main endp end _main. #include
; }; ostream& <iostream.h> void cproc(int x,float
operator<<(ostream& y) { cout << "Rez "
s,complex& a) { s << ‘(‘ << x << " “; cout
<< a.re << ‘,’ <<a.im << y << "\n"; }.
<< ‘)’; return s; } void main(void) 23Пример: С – ассемблер. #include
{ complex a(3.,4.),b=a+5,c=a+b; cout <conio.h> Extern “c” asmproc(char
<< “c=” << c << endl; }. ch, unsigned x, unsigned y, unsigned kol);
@complex@$od$qv proc c near ARG ts:word Void main(void) { clrscr();
USES si mov si,ts fld qword ptr [si].re asmporc(‘a’,2,3,5); asmproc(‘c’,9,2,7); }.
fmul qword ptr [si].re fld qword ptr Результат: .Model small,c .Stack 256 .Code
[si].im fmul qword ptr [si].im fadd fsqrt public asmproc asmproc proc c near arg
ret @complex@$od$qv endp. chr:byte,x:word,y:word,kol:word uses
@complex@$bctr$qdd. ax,dx,cx,dx xor bh,bh ; видеостраница mov
@complex@$badd$q7complex. dh,byte ptr y ; строка mov dl,byte ptr x ;
@$blsh$qr7ostreamr7complex. столбец mov ah,2 ; позиционирование int
8Соглашение об именах. Имена сегментов 10h ; курсора mov ah,9 ; вывод символа mov
программ, написанных на ассемблере, должны al,chr ; символ mov bl,7 ; атрибут mov
быть совместимы с именами сегментов, cx,kol ; мультипликатор int 10h ret
написанных на ЯВУ. Например: Borland C++ asmproc endp end.
(модель памяти small) имя сегмента кода - 24Процедуры сортировки. Метод пузырька.
_TEXT; сегмента данных - _DATA Модуль на Быстрая сортировка. Сортировка линейным
ассемблере должен использовать те же имена выбором.
для обеспечения совместимости. Модели 25Сегменты стека и данных. .Model small
памяти, используемые ассемблером и ЯВУ, .Stack 256 .486 .Data xk=640 ; число точек
должны порождать одни и те же формы по горизонтали yk=340 ; число точек по
операторов перехода. Для простоты следует вертикали color=14 y dw xk dup(?) ; Массив
использовать директиву в форме: .model значений функции x dd xk-1 ym dw yk/2
тип_памяти,имя_языка. vpage db 0 ; видеостраница vreg db 0 ;
9Соглашение о вызовах (Low-Level номер видеорежима xp dw ?
Protocol). Определяет: - содержимое каких 26Основная программа. mov bx,offset y
регистров не должно изменяться в процессе mov dx,xk call qsort call graf call bgn
выполнения программ; - в каком порядке call graf lea si,y mov dx,xk call lsort
аргументы должны быть переданы в call graf .exit 0 main endp. .code main
подпрограмму; - механизм передачи proc mov ax,@data mov ds,ax mov es,ax call
аргументов; - как восстанавливается bgn call graf mov di,offset y mov dx,xk
значение регистра указателя стека после call psort call graf call bgn call graf.
вызова процедуры; - как функции возвращают 27Метод пузырька. psort proc near ;
вычисленные значения в вызывающую их Сортировка массива методом пузырька ;
программу. По значению: копия аргумента ? Вход: DS:DI = адрес массива слов ; DX =
стек По близкой ссылке:смещение аргумента размер массива pusha cld cmp dx,1 jbe
? стек (обе программы работают с одним и s_exit ; сортировать нечего dec dx ps_l1:
тем же сегментом данных) По дальней mov cx,dx ; длина цикла xor bx,bx ; флаг
ссылке: адресная пара ? стек (основная обмена mov si,di ; указатель на текущий
программа и подпрограмма работают с элемент ps_l2: lodsw ; считать элемент cmp
различными сегментами данных). ax,[si] ; сравнить предыдущий и текущий
10Соглашения о порядке передачи jle no_ch ; элементы xchg ax,[si] ;
параметров, принятые в ЯВУ. Конвенция изменит порядок следования mov [si-2],ax
Паскаль:*. Конвенция С:**. Фактические inc bx ; установить флаг обмена no_ch:
параметры передаются через стек в порядке loop ps_l2 or bx,bx ; продолжить, если был
их перечисления в операторе вызова; jnz ps_l1 ; изменен порядок следования
Освобождение стека – обязанность s_exit: popa ret psort endp.
вызываемой процедуры; Фактические 28Быстрая сортировка. qsort proc near ;
параметры передаются через стек в порядке Процедура быстрой сортировки ; Вход: DS:BX
обратном порядку их перечисления в = адрес массива ; DX = число элементов
операторе вызова; Освобождение стека – массива cmp dx,1 jbe qs_exit ; сортировать
обязанность вызывающей функции; Результат нечего xor di,di ; индекс для просмотра
вычисления функций передается через сверху mov si,dx ; индекс для просмотра
регистр ax. Basic, Fortran, Ada, Oberon, снизу dec si shl si,1 ; число слов в
Modula2. С++, prolog. байтах mov ax,[bx] ; временная медиана
11Конвенция Pascal ; Some_proc(a,b,c,d) qs_s2: cmp [bx][si],ax ; просмотр снизу
Push a Push b Push c Push d Call Some_proc jle qs_s3 ; если текущий элемент <
… ; Procedure Some_proc(a,b,c,d:integer); медианы dec si ; продвигаемся вверх dec si
Push bp Mov bp,sp A equ [bp+10] B equ jmp qs_s2 qs_s3: cmp si,di ; просмотры
[bp+8] C equ [bp+6] D equ [bp+4] … Pop bp встретились je qs_s5 inc di ; это элемент
Ret 8 Some_proc endp. Конвенция C ; взят за медиану inc di cmp [bx][di],ax ;
Some_proc(a,b,c,d); Push d Push c Push b просмотр сверху jl qs_s3 ; если текущий
Push a Call Some_proc Add sp,8 … ; Void элемент < медианы.
Some_proc(int a,int b,int c,int d) Push bp 29Qs_s4: mov cx,[bx][di] ; этот нижний
Mov bp,sp A equ [bp+4] B equ [bp+6] C equ элемент > медианы xchg cx,[bx][si] ;
[bp+8] D equ [bp+10] … Pop bp Ret этот верхний элемент < медианы mov
Some_proc endp. [bx][di],cx ; поменяли их местами jmp
12Передача неопределенного числа qs_s2 qs_s5: xchg ax,[bx][di] ; поменять
аргументов. .model small .stack 256 .286 медиану и текущий элемент mov [bx],ax ;
include print.h .data x1 dw 21 x2 dw 12 подготовка к нижней рекурсии push dx push
rez dw ? .code callv macro sname,arg local di push bx mov dx,di shr dx,1 call qsort
sz sz=0 irp i,<&arg> push i pop bx ; подготовка к верхней рекурсии pop
sz=sz+2 endm. push sz/2 call sname add di pop dx inc di inc di add bx,di shr di,1
sp,sz endm main proc mov ax,@data mov sub dx,di call qsort qs_exit: ret qsort
ds,ax callv Sum,<1,3,5,7,9> mov endp.
rez,ax print int,rez newline callv 30Сортировка линейным выбором. ; Вход:
Sum,<x1,x2> mov rez,ax print int,rez DS:SI = адрес массива ; DX = число
.exit 0 main endp. элементов массива ls_do: lea bx,[di-2] mov
13Передача неопределенного числа ax,[bx] ; новое минимальное dec cx ;
аргументов. Sum proc enter 0,0 mov осталось элементов jcxz ls_tl ; переход
cx,[bp+4] ; количество аргументов xor если наименьший ls_l1: scasw ; очередной
ax,ax mov si,bp ; адрес первого add si,6 ; элемент jg ls_do ; не минимальный loop
аргумента L: add ax,ss:[si] add si,2 ; ls_l1 ls_tl: xchg ax,[si-2] ; перестановка
вычисление суммы loop L leave ret sum endp минимального mov [bx],ax ; и начального
end main. Результат: элементов lsort proc near ; Точка входа
14Паскаль – ассемблер. Представление mov bx,si ; адрес первого = минимального
типов аргументов. По значению. По lodsw ; загрузить первый mov di,si ; адрес
значению. По ссылке. По ссылке. Через ST. текущего элемента dec dx ; флаг тот же,
Char. Byte. VAR всех типов. Dword. Single. что и cmp dx, mov cx,dx ; количество
Byte. Byte. Pointer. Dword. Double. циклов не портит флаги jg ls_l1 ; пока dx
Boolean. Byte. Longint. Dword. Extended. > 1 ret lsort endp.
0..255. Byte. String. Dword. Comp. 31Инициализация массива. bgn proc fild x
0..65535. Word. Множества. Dword. Word. fldpi fldpi fadd fdivr fldpi fchs mov
Word. Массивы >4 байт. Dword. Integer. cx,xk xor bx,bx L: fld st fsin. fild ym
Word. Записи > 4 байт. Dword. Real. 3 fmul fild ym fsub fchs fistp y[bx] add
words. Array. Как есть до 4 байт. Как есть bx,2 fadd st,st(1) loop L ret bgn endp.
до 4 байт. Record. 32Рисование кривой и точки. point proc
15Паскаль – ассемблер. Типы возвращаемых push ax push bx mov ah,0ch mov al,color
значений. Тип. Байт. Регистр. Тип. Байт. mov bh,vpage int 10h pop bx pop ax ret
Регистр. Boolean. 1. Al. Longint. 4. Char. point endp end main Результат: graf proc
1. Al. Single. ST(0). Enum(8 бит). 1. Al. mov ah,0fh int 10h mov vreg,al mov
Double. ST(0). Enum(16 бит). 2. Ax. Real. vpage,bh mov ah,0 mov al,10h int 10h mov
6. dx:bx:ax. Shortint. 1. Al. Extended. cx,xk mov bx,xk-1 shl bx,1 L1: mov
ST(0). Byte. 1. Al. Comp. ST(0). Integer. dx,y[bx] call point sub bx,2 loop L1 mov
2. Ax. Pointer. 4. dx:ax. Word. 2. Ax. ah,8 int 21h mov ah,0 mov al,vreg int 10h
String. Указатель в стеке. Указатель в ret graf endp.
стеке.
Ассемблер, встроенный в ЯВУ. Соглашение о связях.ppt
http://900igr.net/kartinka/informatika/assembler-vstroennyj-v-javu.-soglashenie-o-svjazjakh-61412.html
cсылка на страницу

Ассемблер, встроенный в ЯВУ. Соглашение о связях

другие презентации на тему «Ассемблер, встроенный в ЯВУ. Соглашение о связях»

«Подчинительная связь» - Типы подчинительной связи в словосочетании: согласование, управление, примыкание. Заботиться о здоровье Посмотрел на присутствующих Летел к нам Принять помощь. Примыкание. Какое же зеркало жизни наш язык! Говорить решается. Зеркало жизни. - Согласование - примыкание - примыкание - согласование - управление - примыкание - согласование.

«Водородная связь» - Межмолекулярная. возникает 2)внутри молекулы ДНК (между азотистыми основаниями по принципу комплементарности: А – Т , Ц – Г ). 4)между молекулами карбоновых кислот (муравьиная, уксусная) (димеры карбоновых кислот). 1)между молекулами воды. 2)между молекулами аммиака. Химические вещества. 2)некоторые спирты и кислоты неограниченно растворимы в воде.

«Сотовая связь» - Сотовый бизнес холдинга «Связьинвест». Динамика количества абонентов сотовых компаний стандарта GSM, входящих в Холдинг ОАО «Связьинвест». Рынок услуг сотовой связи в Поволжском регионе. Доля холдинга «Связьинвест» на рынке сотовой связи. Карта зоны предоставления услуг. Развитие сотовой связи. Рынок услуг сотовой связи в Сибирском регионе.

«Связь предложений в тексте» - Задание А6 Какое из приведённых ниже предложений должно быть первым в тексте? Вздохнул, сверкнул очами и – вниз скатился. Текст. Разбор заданий. Смысловая и композиционная целостность текста. Средства связи предложений. Россию можно назвать многонациональным государством 2). Последовательность предложений в тексте.

«Компания Связьинвест» - Программы. Контрольный пакет. Блокирующий пакет. Совершенствование системы стратегического управления. Снижение затрат на закупки и логистику, повышение прозрачности. Эффективная финансово-экономическая служба. Мгтс. Достижение операционной эффективности. Собственная приватизация. Разработка ИТ инфраструктуры.

«Ранняя половая связь» - Например. Включает в себя 5 заболеваний: наиболее известными из которых являются: сифилис гонорея. Ревность не менее сильное чувство, чем любовь. Другие инфекциям относятся 11 болезней: Справиться с ревностью удается далеко не каждому. 1. Знакомо ли вам состояние влюбленности? Классические венерические болезни;

Связь

17 презентаций о связи
Урок

Информатика

130 тем
Картинки
900igr.net > Презентации по информатике > Связь > Ассемблер, встроенный в ЯВУ. Соглашение о связях