Write Your Own Operating System Tutorial(中文版) (轉)
:namespace prefix = o ns = "urn:schemas--com::office" />
你等待已久的時刻終於來臨。寫我們“第一個”已經是時候了。每一本像樣的書籍都會有一個“Hello, World”程式,現在我們瞭解的足夠多,可以寫一個“Hello, World”操作了。如果你做過一些嘗試已經完成這一步了,你可以跳過這一課。我們將建立一個輸出字串的並且用它來顯示我們的訊息。
每次在螢幕上列印一個字元實在夠嗆。所以我們要寫一個函式來列印一個以零結尾的字串。這將是一個迴圈,每次列印一個字元,直到結束。
; ---------------------------------------------
; Print a null-tenated string on the screen
; ---------------------------------------------
putstr:
lodsb ;
or al, al ; Set zero flag if al=0
jz putstrd ; jump to putstrd if zero flag is set
mov ah, 0x0e ; vo function 0Eh (print char)
mov bx, 0x0007 ; color
int 0x10
jmp putstr
putstrd:
retn
現在,稍許解釋一下這個函式的用法。首先你需要把字串第一個字元的地址載入到SI中。然後就只需要這個putstr了。
你可以在你的程式中如下所示的建立字串。
msg 'Hello, World!', 0
最後的那個0用來標記這個字串的結束。接下來你就可以用下面的指令輸出字串了。
mov si, msg ; Load address of message
call putstr ; Print the message
距離可以使用只有一項工作了。載入在SI暫存器中的msg的地址,實際上表示的是距離資料段首地址的偏移量,這個偏移量由暫存器DS。所以在你可以使用msg的地址之前,你必須設定當前的資料段。就現在而言,我們將使用從物理低地址開始的平坦定址(flat addressing)。為了把資料段設為底部的開始部分,可以把DS設為零。下面的兩個指令完成這個。
xor ax, ax ; Zero out ax
mov ds, ax ; Set data segment to base of RAM
試著把上面的程式碼結合到中。然後使用第三課中介紹的方法,編譯,複製到,啟動。然後,享受吧。如果你遇到困難,你可以看看我的方法,。不過只有你自己試過,才能體味到其間的快樂。
如果你完成了,請繼續到下一課,我們將學著讓我們的有互動性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981571/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Write Your Own Operating System Tutorial(1) (轉)
- Write Your Own Operating System Tutorial(2) (轉)
- Write Your Own Operating System Tutorial(4) (轉)
- Write Your Own Operating System Tutorial(3) (轉)
- Write Your Own Operating System Tutorial(5) (轉)
- Write Your Own Operating System Tutorial(6) (轉)
- Write Your Own Operating System Tutorial(7) (轉)
- Write Your Own Operating System Tutorial(中文版) 簡介 (轉)
- Write Your Own Operating System Tutorial(中文版) 簡介
- Build Your Own Cas Service - ProUI
- operating-system structuresStruct
- Checking operating system version FailedAI
- Backup your Linux SystemLinux
- Checking operating system version Failed 續AI
- The Database Administrator's Operating System Account (25)Database
- Can one execute an operating system command from PL/SQL?SQL
- 【build your own xxx】實現你自己的bind函式UI函式
- mysql 啟動錯誤(InnoDB: Operating system error number 13 )MySqlError
- MYSQL-Operating System Error Codes(錯誤程式碼)MySqlError
- 【build your own xxx】實現你自己的call和applyUIAPP
- redhat your system appears to have shut down uncleanlyRedhatAPP
- 作業系統-Operating-System第一章:概述作業系統
- 安裝 ESXi 出現錯誤 ERROR 1962: No operating system foundError
- Protecting Your Database: Specifying Passwords for Users SYS and SYSTEM (70)Database
- 使用oracle的作業系統認證(Operating System Authentication)的方法Oracle作業系統
- Microsoft Agent Tutorial Chapter 1 (轉)ROSAPT
- Microsoft Agent Tutorial Chapter 2 (轉)ROSAPT
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(中篇) (轉)SolidC#APP
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(下篇) (轉)SolidC#APP
- Discover Your Missed ASM Disks(轉)ASM
- 【OEL】Oracle Enterprise Linux Operating System下載方法及安裝體驗OracleLinux
- Tutorial: Hello World with Ant(轉,來自apache)Apache
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(尾篇二) (轉)SolidC#APP
- Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(尾篇一) (轉)SolidC#APP
- System Toolkit for Mac(系統維護工具)中文版Mac
- She Got her ownGo
- 轉載:System:System.arraycopy方法詳解
- Pytorch | Tutorial-03 資料轉換PyTorch