Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Введение в программирование на языке ассемблера

Содержание

Формат инструкции на языке ассемблераДирективаКомандаМакрокомандаМеткаОперандыКомментарий
Введение в программирование на языке ассемблера Формат инструкции на языке ассемблераДирективаКомандаМакрокомандаМеткаОперандыКомментарий Директивы – команды управления работой транслятораУправление листингомPAGE К_стр К_симв9 < К_стр=66 < Три модели организации адресного пространства Директива описания сегмента	Имя	SEGMENT	[1] [2] [3] [4]	Имя	ENDSЗдесь	[1] - тип выравнивания 		[2] - тип Тип выравниванияBYTE		x 1WORD		x 2DWORD	x 4PARA		x 16PAGE		x 256MEMPAGE	x 1024Тип объединенияPRIVATEPUBLIC (MEMORY)COMMONSTACKAT ****Размер адресаUSE16USE32Класс‘имя_класса’данныекоманды****0****0****0****ics: **** ip:0000cs: **** ip:000i ОбозначенияSR – сегментный регистрr8, r16, r32 – регистр общего назначенияm8, m16,m32 – Директива указания содержимого сегментных регистровASSUME SR:имя [,sr:имя]…Имя – имя сегмента или NOTHINGДиректива Директива описания процедуры			Имя		PROC	[FAR]				Тело_процедуры			Имя		ENDPFar – для входа в процедуру используется полный адрес (адресная Директивы описания данных ПримерData segmentA		db	?B		db	‘abcd’,4 dup(‘*’)C		dw	-1,0,1D		dw	CE		dd	DF		db	0fh,15,17q,1111bG		dd	-1.5H		dq	‘hgfedcba’Data	ends;”abcd****”;Offset C;Seg D:Offset D;4 dup(15);”abcdefgh” Инструкция MOV N.B.Mov ax,0ffh00ffax:Mov m16,axff00k	  	     k+1		    k+2	 ah			al Инструкция генерации программного прерывания intВызов функции BIOS		 Int	10hНомер функции задается в регистре Пример	title		Первый файл	subttl	Основная программа и сегмент данныхStkseg	segment	stack			db		256 dup(?)Stkseg	endsDtseg		segment	publicx			db		Cdseg	 segment	assume	cs:cdseg,ds:dtseg,ss:stkseg,es:nothingmain	proc	far 	mov	ax,dtseg	; инициализация сегментного 	mov	ds,ax		; регистра данных 	mov	ah,9		; функция DOS вывод title	Второй файл	subttl	Еще один сегмент данныхDtseg	segment	byte publicy			db	'$'Dtseg	ends		endРезультат:	abcdef* title	Второй файл	subttl	Еще один сегмент данныхDtseg	segment	publicy			db	'$'Dtseg	ends		endРезультат:	abcdef     * Turbo Assembler	 Version 4.1	  22/02/04 14:26:27	  Page 1tst.asmПервый файлОсновная программа Turbo Assembler	 Version 4.1	  22/02/04 14:26:27	  Page 2Symbol TableПервый файлSymbol Turbo Assembler	 Version 4.1	  22/02/04 14:26:27	  Page 1tst1.asmВторой файлЕще один Start 	  Stop	   Length  Name Использование оператора mov#include  int mema;void main() { _asm mov mema,5;	/*то же, Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного хранения Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного хранения Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного хранения Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного хранения Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного хранения Команды работы со стекомSS[k]				   SP[n]PUSHA Команды работы со стекомdisibpspbxdxcxaxSS[k] SP[n-16]PUSHA POPA Команды работы со стекомSS[k]				     SP[n]PUSHA POPA PUSHF Команды работы со стекомFlagsSS[k]				 SP[n-2]PUSHA POPA PUSHF POPF Команды работы со стекомSS[k]				   SP[n]PUSHA POPA PUSHF POPF PUSHAD POPAD
Слайды презентации

Слайд 2 Формат инструкции на языке ассемблера
Директива
Команда
Макрокоманда
Метка
Операнды
Комментарий




Формат инструкции на языке ассемблераДирективаКомандаМакрокомандаМеткаОперандыКомментарий

Слайд 3 Директивы – команды управления работой транслятора
Управление листингом
PAGE К_стр К_симв
9

Директивы – команды управления работой транслятораУправление листингомPAGE К_стр К_симв9 < К_стр=66

< К_стр=66 < 256
59 < К_симв=80 < 133

Переход к

новой странице
PAGE

Заголовок
TITLE текст

Подзаголовок
SUBTTL текст


Слайд 4 Три модели организации адресного пространства

Три модели организации адресного пространства

Слайд 5 Директива описания сегмента
Имя SEGMENT [1] [2] [3] [4]

Имя ENDS
Здесь [1] -

Директива описания сегмента	Имя	SEGMENT	[1] [2] [3] [4]	Имя	ENDSЗдесь	[1] - тип выравнивания 		[2] -

тип выравнивания [2] - тип объединения [3] - класс [4] - размер

адреса (для i386 и выше)
Имя – константа, содержащая номер параграфа начала сегмента

Слайд 6 Тип выравнивания
BYTE x 1
WORD x 2
DWORD x 4
PARA x 16
PAGE x 256
MEMPAGE x 1024
Тип

Тип выравниванияBYTE		x 1WORD		x 2DWORD	x 4PARA		x 16PAGE		x 256MEMPAGE	x 1024Тип объединенияPRIVATEPUBLIC (MEMORY)COMMONSTACKAT ****Размер адресаUSE16USE32Класс‘имя_класса’данныекоманды****0****0****0****ics: **** ip:0000cs: **** ip:000i

объединения
PRIVATE
PUBLIC (MEMORY)
COMMON
STACK
AT ****

Размер адреса
USE16
USE32

Класс
‘имя_класса’
данные

команды
****0
****0
****0
****i
cs: **** ip:0000
cs: **** ip:000i


Слайд 7 Обозначения
SR – сегментный регистр
r8, r16, r32 – регистр

ОбозначенияSR – сегментный регистрr8, r16, r32 – регистр общего назначенияm8, m16,m32

общего назначения
m8, m16,m32 – адрес области памяти
i8,i16,i32 – непосредственное

значение (константа)

Слайд 8 Директива указания содержимого сегментных регистров
ASSUME SR:имя [,sr:имя]…
Имя –

Директива указания содержимого сегментных регистровASSUME SR:имя [,sr:имя]…Имя – имя сегмента или

имя сегмента или NOTHING
Директива «Конец модуля»
END [точка входа в

программу]

Слайд 9 Директива описания процедуры
Имя PROC [FAR]
Тело_процедуры
Имя ENDP
Far – для входа в процедуру

Директива описания процедуры			Имя		PROC	[FAR]				Тело_процедуры			Имя		ENDPFar – для входа в процедуру используется полный адрес

используется полный адрес (адресная пара CS:IP)
Иначе – только смещение

(IP)

Слайд 10 Директивы описания данных




Директивы описания данных

Слайд 11 Пример
Data segment
A db ?
B db ‘abcd’,4 dup(‘*’)
C dw -1,0,1
D dw C
E dd D
F db 0fh,15,17q,1111b
G dd -1.5
H dq ‘hgfedcba’
Data ends


;”abcd****”

;Offset C
;Seg D:Offset D
;4 dup(15)

;”abcdefgh”

ПримерData segmentA		db	?B		db	‘abcd’,4 dup(‘*’)C		dw	-1,0,1D		dw	CE		dd	DF		db	0fh,15,17q,1111bG		dd	-1.5H		dq	‘hgfedcba’Data	ends;”abcd****”;Offset C;Seg D:Offset D;4 dup(15);”abcdefgh”

Слайд 12 Инструкция MOV




Инструкция MOV

Слайд 13 N.B.
Mov ax,0ffh
0
0
f
f
ax:
Mov m16,ax
f
f
0
0
k

N.B.Mov ax,0ffh00ffax:Mov m16,axff00k	 	   k+1		  k+2	 ah			al

k+1 k+2
ah al


Слайд 14 Инструкция генерации программного прерывания int
Вызов функции BIOS
Int 10h
Номер

Инструкция генерации программного прерывания intВызов функции BIOS		 Int	10hНомер функции задается в

функции задается в регистре ah
02h – установить курсор dh –

строка, dl – колонка
03h – получить позицию курсора на bh странице dh – строка, dl - колонка

Вызов функции DOS
Int 21h

01h – ввод символа в al
02h – вывод символа из dl
09h – вывод строки, до ‘$’ адрес в dx
4ch – завершение програм-мы с кодом ошибки al


Слайд 15 Пример
title Первый файл
subttl Основная программа и сегмент данных

Stkseg segment stack
db 256 dup(?)
Stkseg ends

Dtseg segment public
x db "abcdef"
Dtseg ends

Пример	title		Первый файл	subttl	Основная программа и сегмент данныхStkseg	segment	stack			db		256 dup(?)Stkseg	endsDtseg		segment	publicx			db

Слайд 16 Cdseg segment
assume cs:cdseg,ds:dtseg,ss:stkseg,es:nothing
main proc far mov ax,dtseg ; инициализация сегментного mov ds,ax ; регистра данных mov ah,9 ; функция DOS

Cdseg	 segment	assume	cs:cdseg,ds:dtseg,ss:stkseg,es:nothingmain	proc	far 	mov	ax,dtseg	; инициализация сегментного 	mov	ds,ax		; регистра данных 	mov	ah,9		; функция DOS

вывод строки mov dx,offset x ; адрес строки int 21h mov ah,2 ; функция DOS вывод символа mov dl,2ah ;

код символа * int 21h mov ah,4ch ; функция завершения задачи mov al,0 ; код ошибки int 21h
main endp
Cdseg ends
end main

Слайд 17 title Второй файл
subttl Еще один сегмент данных
Dtseg segment byte public
y db '$'
Dtseg ends
end

Результат: abcdef*

title	Второй файл	subttl	Еще один сегмент данныхDtseg	segment	byte publicy			db	'$'Dtseg	ends		endРезультат:	abcdef*

Слайд 18 title Второй файл
subttl Еще один сегмент данных
Dtseg segment public
y db '$'
Dtseg ends
end

Результат: abcdef

title	Второй файл	subttl	Еще один сегмент данныхDtseg	segment	publicy			db	'$'Dtseg	ends		endРезультат:	abcdef   *

Слайд 19 Turbo Assembler Version 4.1 22/02/04 14:26:27

Turbo Assembler	 Version 4.1	 22/02/04 14:26:27	 Page 1tst.asmПервый файлОсновная программа и

Page 1
tst.asm
Первый файл
Основная программа и сегмент данных

1 0000 stkseg segment stack
2 0000 0100*(??) db 256 dup(?)
3 0100 stkseg ends
4
5 0000 dtseg segment public
6 0000 61 62 63 64 65 66 x db "abcdef"
7 0006 dtseg ends
8
9 0000 cdseg segment
10 assume cs:cdseg,ds:dtseg,ss:stkseg,es:nothing
11 0000 main proc far
12 0000 B8 0000s mov ax,dtseg
13 0003 8E D8 mov ds,ax
14
15 0005 B4 09 mov ah,9
16 0007 BA 0000r mov dx,offset x
17 000A CD 21 int 21h
18 000C B4 02 mov ah,2
19 000E B2 2A mov dl,2ah
20 0010 CD 21 int 21h
21
22 0012 B4 4C mov ah,4ch
23 0014 B0 00 mov al,0 ; код ошибки
24 0016 CD 21 int 21h
25 0018 main endp
26 0018 cdseg ends
27
28 end main

Слайд 20 Turbo Assembler Version 4.1 22/02/04 14:26:27

Turbo Assembler	 Version 4.1	 22/02/04 14:26:27	 Page 2Symbol TableПервый файлSymbol Name

Page 2
Symbol Table
Первый файл

Symbol Name Type Value

??DATE Text "22/02/04"
??FILENAME

Text "tst "
??TIME Text "14:26:27"
??VERSION Number 040A
@CPU Text 0101H
@CURSEG Text CDSEG
@FILENAME Text TST
@WORDSIZE Text 2
MAIN Far CDSEG:0000
X Byte DTSEG:0000

Groups & Segments Bit Size Align Combine Class

CDSEG 16 0018 Para none
DTSEG 16 0006 Para Public
STKSEG 16 0100 Para Stack

Слайд 21 Turbo Assembler Version 4.1 22/02/04 14:26:27

Turbo Assembler	 Version 4.1	 22/02/04 14:26:27	 Page 1tst1.asmВторой файлЕще один сегмент

Page 1
tst1.asm
Второй файл
Еще один сегмент данных
1 0000

dtseg segment byte public
2 0000 24 y db '$'
3 0001 dtseg ends
4
5 end
Turbo Assembler Version 4.1 22/02/04 14:26:27 Page 2
Symbol Table
Второй файл
Symbol Name Type Value

??DATE Text "22/02/04"
??FILENAME Text "tst1 "
??TIME Text "14:26:27"
??VERSION Number 040A
@CPU Text 0101H
@CURSEG Text DTSEG
@FILENAME Text TST1
@WORDSIZE Text 2
Y Byte DTSEG:0000

Groups & Segments Bit Size Align Combine Class
DTSEG 16 0001 Byte Public

Слайд 22 Start Stop Length

Start 	 Stop	  Length Name    Class

Name

Class
00000H 000FFH 00100H STKSEG
00100H 00106H 00007H DTSEG
00110H 00127H 00018H CDSEG
Program entry point at 0011:0000

Распределение памяти (.mem)


Слайд 23 Использование оператора mov
#include int mema;
void main() { _asm mov

Использование оператора mov#include int mema;void main() { _asm mov mema,5;	/*то же,

mema,5; /*то же, что и mema=5; */ cout

mema << endl; }
Результат: mema=5

Слайд 24 Использование стека
Используется для:
Хранения адреса возврата из вызванной программы
Передачи

Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного

параметров между программами
Временного хранения данных
Единица данных – слово
Регистры, связанные

со стеком: ss, sp, bp






k k+2 k+4 k+6 k+n-4 k+n-2 k+n





SS[k] SP[n]

PUSH 1 PUSH 2 POP bx POP ax NOP


Слайд 25 Использование стека
Используется для:
Хранения адреса возврата из вызванной программы
Передачи

Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного

параметров между программами
Временного хранения данных
Единица данных – слово
Регистры, связанные

со стеком: ss, sp, bp






k k+2 k+4 k+6 k+n-4 k+n-2 k+n


1



SS[k] SP[n-2]

PUSH 1 PUSH 2 POP bx POP ax NOP


Слайд 26 Использование стека
Используется для:
Хранения адреса возврата из вызванной программы
Передачи

Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного

параметров между программами
Временного хранения данных
Единица данных – слово
Регистры, связанные

со стеком: ss, sp, bp






k k+2 k+4 k+6 k+n-4 k+n-2 k+n

2

1



SS[k] SP[n-4]

PUSH 1 PUSH 2 POP bx POP ax NOP


Слайд 27 Использование стека
Используется для:
Хранения адреса возврата из вызванной программы
Передачи

Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного

параметров между программами
Временного хранения данных
Единица данных – слово
Регистры, связанные

со стеком: ss, sp, bp






k k+2 k+4 k+6 k+n-4 k+n-2 k+n


1



SS[k] SP[n-2]

PUSH 1 PUSH 2 POP bx ; =2 POP ax NOP


Слайд 28 Использование стека
Используется для:
Хранения адреса возврата из вызванной программы
Передачи

Использование стекаИспользуется для:Хранения адреса возврата из вызванной программыПередачи параметров между программамиВременного

параметров между программами
Временного хранения данных
Единица данных – слово
Регистры, связанные

со стеком: ss, sp, bp






k k+2 k+4 k+6 k+n-4 k+n-2 k+n





SS[k] SP[n]

PUSH 1 PUSH 2 POP bx ; =2 POP ax ; =1 NOP


Слайд 29 Команды работы со стеком









SS[k] SP[n]
PUSHA

Команды работы со стекомSS[k]				  SP[n]PUSHA

Слайд 30 Команды работы со стеком

di
si
bp
sp
bx
dx
cx
ax
SS[k] SP[n-16]
PUSHA POPA

Команды работы со стекомdisibpspbxdxcxaxSS[k] SP[n-16]PUSHA POPA

Слайд 31 Команды работы со стеком









SS[k]

Команды работы со стекомSS[k]				   SP[n]PUSHA POPA PUSHF

SP[n]
PUSHA POPA PUSHF


Слайд 32 Команды работы со стеком








Flags
SS[k] SP[n-2]
PUSHA POPA PUSHF POPF

Команды работы со стекомFlagsSS[k]				 SP[n-2]PUSHA POPA PUSHF POPF

  • Имя файла: vvedenie-v-programmirovanie-na-yazyke-assemblera.pptx
  • Количество просмотров: 122
  • Количество скачиваний: 2