-
–
stack


LIFO


       Last
       In
       First
       Out
000F
000E
000D
000C
000B
000A            10h


       (stack
                           segment)

                      SS

                           SS
000F   12h
000E   34h
000D   00h
000C   7Fh
000B
000A
000F
000E
000D
000C
000B
000A



       F
bos
      000F   12h
      000E   34h
      000D   00h
tos
      000C   7Fh                              –
      000B                                –
      000A

                        7Fh - 1234h

                                SP    –

                   SP
                                          10h
                            000Ch
push
        PUSH opnd
   SP




                     -
                    -
pop
       POP opnd
  SP




                      -
            -     –   -   '
(stack
      over/underflow)
-

    •
    •
    •
    •
label:
     •
     •
          -
      •
ret
-
            CALL label

label         -
call
       call        •
IP
              IP   •




                   •
ret           -
     call
                              ret
IP

                  end -
-‫א‬
AL- AH
 AH
         AL-
               -‫ב‬
-

    .1
    .2
    .3
.model small
.stack 100h
.data
.code
begin:         mov ax, @data
               mov ds , as
               mov ah,[50h]
               mov bh,[51h]
               mov ch,[52h]
               mov dh,[53h]
               call add_numbers
sof:            mov ah,4ch
               Int 21h
add_numbers: mov dl, 0            -
             add dl, ah
             add dl, bh
             add dl, ch
             add dl, dh
             ret
               end
.model small
.stack 100h
.data
.code
mov ax, @data
mov ds , as
begin: call add_numbers
sof:    mov ah,4ch
               Int 21h
add_numbers: mov ah,[50h]               -
             mov bh,[51h]
                         mov ch,[52h]
                         mov dh,[53h]
                         mov dl, 0
                         add dl, ah
                         add dl, bh
                         add dl, ch
                         add dl, dh
                         ret
               end
.model small
.stack 100h
.data
x db 5
y db 10
z db 20
w db 17
sum db 0
.code
mov ax, @data
mov ds , as
begin:         call add_numbers
sof:            mov ah,4ch
                Int 21h
add_numbers:                 mov ah, 0     -
                             add ah , x
                             add ah, y
                             add ah, z
                             add ah, w
                             mov sum, ah
                             ret
                end
-       •


    -   •
.model small
.stack 100h
.data
.code
mov ax, @data
mov ds , as
begin:               mov ah ,0
                     mov al, [50h]
                     push ax
                     mov al, [51h]
                     push ax
                     mov al, [52h]
                     push ax
                     mov al, [53h]
                     push ax
                     call add_numbers
sof:    mov ah,4ch
        Int 21h
add_numbers:                    pop bx       -
                                 pop ax
                                 pop dx
                                add dl, al
                                 pop ax
                                add dl, al
                                pop ax
                                add dl, al
                                push bx
                                ret
                     end
-
20
     50h



               -

פרק 6 המחסנית ותת תכניות

  • 1.
  • 2.
  • 3.
    stack LIFO Last In First Out
  • 4.
    000F 000E 000D 000C 000B 000A 10h (stack segment) SS SS
  • 5.
    000F 12h 000E 34h 000D 00h 000C 7Fh 000B 000A
  • 6.
  • 7.
    bos 000F 12h 000E 34h 000D 00h tos 000C 7Fh – 000B – 000A 7Fh - 1234h SP – SP 10h 000Ch
  • 9.
    push PUSH opnd SP - -
  • 10.
    pop POP opnd SP - - – - '
  • 11.
    (stack over/underflow)
  • 12.
    - • • • •
  • 13.
    label: • • - • ret
  • 14.
    - CALL label label -
  • 15.
    call call • IP IP • •
  • 16.
    ret - call ret IP end -
  • 17.
    -‫א‬ AL- AH AH AL- -‫ב‬
  • 18.
    - .1 .2 .3
  • 19.
    .model small .stack 100h .data .code begin: mov ax, @data mov ds , as mov ah,[50h] mov bh,[51h] mov ch,[52h] mov dh,[53h] call add_numbers sof: mov ah,4ch Int 21h add_numbers: mov dl, 0 - add dl, ah add dl, bh add dl, ch add dl, dh ret end
  • 20.
    .model small .stack 100h .data .code movax, @data mov ds , as begin: call add_numbers sof: mov ah,4ch Int 21h add_numbers: mov ah,[50h] - mov bh,[51h] mov ch,[52h] mov dh,[53h] mov dl, 0 add dl, ah add dl, bh add dl, ch add dl, dh ret end
  • 21.
    .model small .stack 100h .data xdb 5 y db 10 z db 20 w db 17 sum db 0 .code mov ax, @data mov ds , as begin: call add_numbers sof: mov ah,4ch Int 21h add_numbers: mov ah, 0 - add ah , x add ah, y add ah, z add ah, w mov sum, ah ret end
  • 22.
    - • - •
  • 23.
    .model small .stack 100h .data .code movax, @data mov ds , as begin: mov ah ,0 mov al, [50h] push ax mov al, [51h] push ax mov al, [52h] push ax mov al, [53h] push ax call add_numbers sof: mov ah,4ch Int 21h add_numbers: pop bx - pop ax pop dx add dl, al pop ax add dl, al pop ax add dl, al push bx ret end
  • 24.
    - 20 50h -