在閱讀《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...