Na wstępie chcę dodać że temat będzie poświęcony głównie dodawanie w u2 mimo wstępnego problemu opisanego dalej
- Witam, mam za zadanie napisać program o podanej specyfikacji
- Napisać program który dodaje do siebie dwie liczby całkowite w zapisane w kodzie U2.
- Obie liczby mają być zapamiętane jako tablice znaków ASCII, zaś zakres tych liczb ma
obejmować przedział [–32768..32767].- Liczby te muszą zostać skonwertowane z postaci znakowej do 16-bitowej postaci
obliczeniowej w kodzie U2, a następnie dodane. Wynik, również w kodzie U2, ma z kolei
mieć postać 32-bitową. Przekształcenie z postaci 16-bitowej do 32-bitowej powinno być
wykonane poprzez wykorzystanie 32-bitowych rejestrów procesora (np.: EAX, EBX itd.)- Po wyliczeniu wynik ma zostać skonwertowany do postaci ciągu znaków ASCII i
wyświetlony na ekranie.- Do wyświetlenia znaków można użyć funkcji: 02h (wysłanie znaku na konsolę) lub 09h
(wysłanie na konsolę łańcucha znaków).
lecz już na starcie mam problem z napisaniem programu z użyciem rejestrów eax itp, dyrektywa ".386p" sprawia z program mimo kodu zamknięcia programu nie zamyka się, w debugerze następuje zapętlenie pewnej sekcji która nawet nie jest w kodzie ;/
załączam SS z debugera wraz z kodami
dobrze działający program
z dyrektywa .386p
program typu exe który działa (dostaliśmy od prowadzących zajęcia)
```asm
.386p
.MODEL SMALL
Dane SEGMENT USE16
Napis DB "Witaj swiecie!",13,10,"$"
Dane ENDS
Kod SEGMENT USE16
ASSUME CS:Kod, DS:Dane, SS:Stosik
Start: mov ax, SEG Dane
mov ds, ax
mov ah, 09h
mov dx, OFFSET Napis
int 21h
mov eax, 1
mov ebx, 2
add eax, ebx
mov ax, 4C00h
int 21h
Kod ENDS
Stosik SEGMENT stack USE16
DB 100h DUP(0)
Stosik ENDS
END Start
2.Potrafię zamienić znak na właściwą cyfrę, teorię na temat u2 (zapis) znam, wiem że muszę zwracać uwagę na najstarszy bit (określa czy liczba jest dodatnia lub ujemna), na flagi w przypadku przepełnień po wykonanej operacji itp. lecz nie wiem jak to ugryźć od strony programu