01 第乙個匯程式設計序

2022-10-11 03:00:16 字數 1481 閱讀 1218

在閱讀《x86組合語言-從實模式到保護模式》

這本書的時候,從b站上看到**教程,使用虛擬機器然後將彙編檔案寫入磁碟0面0扇區,然後啟動,在螢幕輸出字元,

這個程式本身就很簡單,之前學習過王爽的彙編,知道視訊記憶體位置08b00h,字低8位是ascii編碼,高8位是字元的顏色

但是在看**的**,發現不同之處

反正也是初學,後續慢慢來,會明白最後三行**的具體用意

mov ax, 0b800h

mov es, ax

mov di, 0

mov byte es:[di], 'h'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 'e'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 'l'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 'l'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 'o'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], ','

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 'a'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 's'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], 'm'

inc di

mov byte es:[di], 2

inc di

mov byte es:[di], '!'

inc di

mov byte es:[di], 2

inc di

;下面這三行不知道是什麼用意,但只有加上這三行才能在虛擬機器中跑起來

jmp $

times 510-($-$$) db 0

db 0x55, 0xaa

編寫好之後,使用nasm -f bin hello.asm -o hello.bin

編譯之後使用fixvhdw2工具寫入虛擬機器的.hdv檔案,然後啟動

寫入之後程式正常執行

後續程式和工具都有了,其實從好幾天前就開始讀這本書,之前沒有工具,使用的是vs code上的masm/tasm外掛程式,直接執行,但是和書裡不一樣的話,怕有些步驟學不到有寫問題遇到了沒有人給解決

然後就是程式不明白的地方,

原文位址:

第乙個匯程式設計序hello world

程式原始碼如下 assume cs code,ds data 定義 段和資料段框架 data segment 資料段 msg db hello world 定義字串 data ends code segment 段 start mov ax,data mov ds,ax 資料段初始化 mov bx,...

除錯第乙個匯程式設計序 下

接 除錯第乙個匯程式設計序 上 很抱歉,在此篇博文中我截了很多的圖,這樣便於講解清楚,各位也看得明白,但是現在我上傳的太多,不能再繼續上傳,以後一旦解禁,我會把缺失的補上。在watch標籤頁視窗中,我們在command命令視窗輸入了命令 ws 1,r0來監控r0暫存器的變化,在此就會顯示r0暫存器的...

組合語言03 第乙個匯程式設計序

整理自魚c論壇課件 匯程式設計序編寫步驟 編寫源 使用masm.exe進行編譯,產生目標檔案 用link.exe,對目標檔案進行鏈結,生成可執行檔案 可執行檔案中包含兩部分內容 1,程式和資料 2,相關的描述資訊 程式有多大,要占用多少記憶體空間等 源程式 assume cs abc abc seg...