Assembly ile basit bir MikeOS uygulaması hazırlamak

DanqerLine

Emekli Yönetici
Katılım
12 Haz 2018
Konular
287
Mesajlar
1,536
Puanları
2,089
  • Bir bilgisayar (Gücü önemli değil, tarayıcıyı açıp Silicone Forum'a girebiliyorsanız MikeOS'u hayli hayli çalıştırırsınız.)
  • QEMU ya da VirtualBox gibi bir uygulama (Ben QEMU kullandım.)
  • NASM
Bu rehberde MikeOS v4.6.2b1 kullanılmıştır.

Öncelikle gereksinimlere sahip olduğunuzu ve MikeOS'un bir dizinde durduğunu varsayıyorum.
Bir uygulama yapmak için programs/ klasörüne gitmeli ve bir Assembly dosyası oluşturmalısınız. Ben dosyaya app.asm adını verdim. Daha sonra dosyayı açın. İlk 3 satır şu şekilde olmalı: (Yorum satırlarını anlamanız için ekledim, isterseniz siz de ekleyebilirsiniz.)
Kod:
; 16 bitte çalıştırıyoruz ve 32K'da başlıyoruz. Neden bilmiyorum, Mike Saunders böyle yapın diyor.
BITS 16
ORG 32768
; MikeOS'un kendi kütüphanesini dahil ediyoruz. Bunu dahil etmezseniz, muhtemelen işkence çekersiniz.
%INCLUDE "mikedev.inc"
Programı yazmaya hazırız. Ben örnek olarak, kullanıcıdan girdi alan ve ekrana bunu diyalog olarak yazdıran bir uygulama yapacağım.

Kullanacağımız işletim sistemi çağrıları: os_input_dialog, os_draw_background, os_dialog_box, os_clear_screen
Öncelikle arkaplanı (aşağıda ve üstte yazı olacak çizmek için os_draw_background sistem çağrısını kullanmamız lazım. Ben değişkenleri dosyanın en alt kısmında belirtiyorum, çoğunlukla da öyle yapılıyor.
Kod:
mov ax, title_msg       ; Başlık
mov bx, footer_msg      ; Altlık ya da her ne deniliyorsa.
mov cx, 00100000b       ; Renk. Kaynak kısmında bu renkleri nasıl
                        ; yazacağınızı bulabilirsiniz. Ben yeşil yaptım.
call os_draw_background ; Sistem çağrısı.


; Dosyanın en alt kısmı.
title_msg    db 'Test uygulamasi', 0
footer_msg    db 'v0.0.1', 0
Şimdi böyle bir görünüm elde ettik:
1617876117404.png



Şimdi bir girdi isteyelim. Bunun için os_input_dialog sistem çağrısını kullanacağım.
Kod:
mov bx, input_msg   ; Gösterilecek metin.
mov ax, input_input ; Girdiyi göndereceğimiz değişken.
call os_input_dialog   ; Sistem çağrısı.


; Dosyanın en alt kısmı.
input_msg db 'Gosterilecek metni girin.', 0
input_input times 12 db 0
Şimdi uygulama bizden bir girdi istiyor:
1617876551327.png

Ve buraya girdi girebiliyorsunuz.
Ve artık son kısma geldik. Uygulamamız girilen girdiyi bir diyalog olarak ekrana yazdıracak ve Enter tuşuna basılıp onaylandığında uygulamayı kapatacak. Bunun için önce ekranı temizlememiz ve arkaplanı yeniden çizmemiz lazım, çünkü os_input_dialog çağrısı, Enter tuşuna basıldıktan sonra pencereyi silmiyor.
Kod:
; Ekranı temizliyoruz ve arkaplanı tekrar çiziyoruz.
call os_clear_screen
mov ax, title_msg ; title_msg ve footer_msg'yi tanımlamıştık, hatırlıyor musunuz?
mov bx, footer_msg
mov cx, 00100000b
call os_draw_background
; Diyalog 3 satır destekler. Biz metni 1. satıra yazdıracağız.
mov ax, input_input
; Ama 2. ve 3. satırları boş bırakacağız.
mov bx, 0
mov cx, 0
; Diyalog "OK/CANCEL" şeklinde mi yoksa "OK" şeklinde mi olacak? "OK" şeklinde.
mov dx, 0
; Diyalog için sistem çağrısı.
call os_dialog_box
; Uygulamayı bitiriyoruz.

To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.


Kaynaklar:
 
Geri
Üst