Обзорная программа на Ассемблере

Слайд 2

Прогрaммa сложения двух 4-рaзрядных десятичных чисел Разделение памяти

Прогрaммa сложения двух 4-рaзрядных десятичных чисел

Разделение памяти

Слайд 3

Сегмент данных mem equ 800h ;адрес первой ячейки memsz equ 800h

Сегмент данных

mem equ 800h ;адрес первой ячейки
memsz equ 800h ;объем памяти
defseg

D_seg, start = mem, class = Data
seg D_seg ;
am1 db 95h,93h ; am1= 800h, M(am1) = 95h, M(am1+1)=93h
am2 dw 8595h ; am2= 802h, M(am2) = 95h, M(am2+1)=85h
amS ds 3 ; amS= 804h
Слайд 4

Суммирование младших разрядов LHLD am2 ; HL ← 8595h – второе

Суммирование младших разрядов

LHLD am2 ; HL ← 8595h – второе слагаемое
XCHG

; DE ← 8595h
LXI H,amS ; HL ← amS = 804h
LDA am1 ; A ← 95d; извлечение первого слагаемого
ADD E ; A ← A + E
DAA ; A ← 95 + 95 = 90d and CY = 1 /десятичная коррекция/
MOV M,A ; M(amS) = 90d
Слайд 5

Суммирование старших разрядов LDA am1+1 ; A ← 93d ADC D

Суммирование старших разрядов

LDA am1+1 ; A ← 93d
ADC D ; A

← A + D + CY
DAA ; A ← 93 + 85 + 1 = 79 and CY = 1
INX H ; HL ← amS + 1 = 805h
MOV M,A ; M(amS+1) ← 79
MVI A,0 ; A ← 0
ADC A ; A ←A + A + CY = 1
INX H ; HL ← amS + 2 = 806h
MOV M,A ; M(amS+2) = CY = 1
Слайд 6

Вызов подпрограммы CALL SB ;PC ← адрес метки SB, Stack ←

Вызов подпрограммы

CALL SB ;PC ← адрес метки SB,
Stack ←

адрес возврата
………{продолжение программы}
;Подпрогрaммa SB
SB: SUI 2
RET ;PC ← Stack(адрес возврата)
Слайд 7

Работа со стеком – задание сегмента defseg stack_seg, start = mem+memsz-20h,

Работа со стеком – задание сегмента

defseg stack_seg, start = mem+memsz-20h,

class = Data
seg stack_seg ;Отрытие сегмента стека (с адреса 0FE0h)
ds 20h ;Резервирование 32 байт для стека