xchg 2 "Указатели" - функция сборки 8086 - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть задача построить функцию, которая заменяет 2 значения указателей.

Вот мой код:

org 100h
jmp main

toSwap1     db 'a'
toSwap2     db 'b'
result         dw ?
numToNeg    dw -9
string      db  'm', 'a', 'g', 's', 'h', 'i', 'm', 'i', 'm', 'v', 'e', 'n', 'e', 'h', 'e', 'n', 'i', 'm' ,0Dh,0Ah,'$'
array        db "0000", 0Dh,0Ah, 24h ; line feed   return   and  stop symbol 24h=$ (ASCII).
num1        dw 0xAC45
; There is some vars thats i need for other missions

main:

; Second function: should print b and a - MAIN CODE FOR FUNC ~
push offset toSwap1
push offset toSwap2
call xChange
mov al, toSwap1
call print_al_chr
PRINTN "and"
mov al, toSwap2
call print_al_chr

mov ah, 0
int 16h
ret

xChange proc ; THE FUNC ~
push bp
push ax
push bx
push cx
mov bp, sp

mov bx, [bp + 12]
mov al, [bx]
mov bx, [bp + 10]
mov cx, [bx]
mov [bx], ax
mov bx, [bp + 12]
mov [bx], cx

pop cx
pop bx
pop ax
pop bp
retn 4
xChange endp

Теперь проблема в том, что значение второго var (вотдолжен выводить 'a' в конце функции получил сброс) .... изображение: введите описание изображения здесь

...