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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP