ASM 板


LINE

看板 ASM  RSS
※ 引述《fancyrex (0℃)》之銘言: : 想請問一個問題, : 該怎麼把暫存器的值print出來? : example : .model small : .586 : .stack : .data : .code : begin: mov ax,@data : mov ds,ax : mov dx,1111h : mov ah,9h : int 21h : end begin : 目前還沒找到方法,所以想請問一下各位前輩。 : 感謝! 用 NASM 寫的,適用8086以上的CPU,推薦用軟體 emu8086 做追蹤,程式碼連結在: http://src.wtgstudio.com/?dPFn52 是寫成 Boot Sector,可用來印出暫存器CS跟暫存器IP的值,稍微改一下應該也可以 用來印其他暫存器。 -- 前陣子小弟發現用可開機光碟在 Virtual PC 2007 跑的時候,Boot Sector 不會載入到 IP = 7C00 處,現在發現了,原來是會被載入到 07C0:0000 處。 避免程式連結會失效,程式碼也貼在這篇內,分隔線以下就是: ======================================================================== ;可分別印出 CS、IP 兩個暫存內容值的 Boot Sector call L L: pop cx ;取得IP之值 ;用 nasm 2.06rc2 做 compile 時,這行佔 1 byte add cx,0x0008 ;用 nasm 2.06rc2 做 compile 時,這行佔 4 byte call start ;用 nasm 2.06rc2 做 compile 時,這行佔 3 byte table db '0123456789ABCDEF' ;cx = table的絕對位址。若程式從 0000:7C00 載入, 則 cx = 7C00 + 000B ;table可用來搭配 XLATB 指令: http://www.ltivs.ilc.edu.tw/kocp/mpu/m4/m4-2-1.htm start: ;----------- ;移動游標到座標(0,0) mov dx,0x0000 call MovCur ;印字I mov al,0x49 call ShowChr ;移動游標到座標(1,0) mov dx,0x0001 call MovCur ;印字P mov al,0x50 call ShowChr ;移動游標到座標(2,0) mov dx,0x0002 call MovCur ;印字= mov al,0x3D call ShowChr ;----------- ;移動游標到座標(3,0) mov dx,0x0003 call MovCur ;印IP-1 mov ax,cx and ax,0xF000 shr ax,12 ;把第一高位元組的值移到al去 call proc ;移動游標到座標(4,0) mov dx,0x0004 call MovCur ;印IP-2 mov ax,cx and ax,0x0F00 shr ax,8 ;把第二高位元組的值移到al去 call proc ;移動游標到座標(5,0) mov dx,0x0005 call MovCur ;印IP-3 mov ax,cx and ax,0x00F0 shr ax,4 ;把第三高位元組的值移到al去 call proc ;移動游標到座標(6,0) mov dx,0x0006 call MovCur ;印IP-4 mov ax,cx and ax,0x000F call proc ;----------- ;移動游標到座標(0,1) mov dx,0x0100 call MovCur ;印字C mov al,0x43 call ShowChr ;移動游標到座標(1,1) mov dx,0x0101 call MovCur ;印字S mov al,0x53 call ShowChr ;移動游標到座標(2,1) mov dx,0x0102 call MovCur ;印字= mov al,0x3D call ShowChr ;移動游標到座標(3,1) mov dx,0x0103 call MovCur ;印CS-1 mov ax,cs and ax,0xF000 shr ax,12 call proc ;移動游標到座標(4,1) mov dx,0x0104 call MovCur ;印CS-2 mov ax,cs and ax,0x0F00 shr ax,8 call proc ;移動游標到座標(5,1) mov dx,0x0105 call MovCur ;印CS-3 mov ax,cs and ax,0x00F0 shr ax,4 call proc ;移動游標到座標(6,1) mov dx,0x0106 call MovCur ;印CS-4 mov ax,cs and ax,0x000F call proc ;移動游標到座標(7,1) mov dx,0x0107 call MovCur ;----------- jmp $ ;暫停於此 MovCur: mov ah,02h mov bx,0x0000 int 10h ret proc: add al,0x30 ;令al的值變 printable 的 ascii call ShowChr ret ShowChr: mov ah,0x09 ;中斷模式設定:游標處印字元 mov bx,0x000c ;bl= 0ch表印出紅色字 push cx mov cx,0x0001 ;設定要印出多少個字元 int 10h pop cx ret times 510-($-$$) db 0 ;($-$$)的意思「在此例」的意思,是計算這行之前已經出 現的位元組數有多少 dw 0xaa55 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.143.200
1F:推 R119:在x86 real mode中 07C0:0000記憶體位址 = 7C00 02/28 09:11
2F:→ zlw:嗯,只不過像這樣由BIOS載入的程式,通常都會用org 0x7c00告知 02/28 09:31
3F:→ zlw:組譯器載入位址在那邊。突然變0000弄出來的位址就會錯誤了 02/28 09:32







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP