mov ax,6622
jmp 0ff0:0100
mov ax,2000
mov ds,ax
mov ax,[0008]
mov ax,[0002]
分析:
cs:ip=2000:0000 mov ax,6622
读入指令mov ax,6622 cs:ip=2000:0003
执行指令mov ax,6622 ax=6622
cs:ip=2000:0003 jmp 0ff0:0100
读入指令 jmp 0ff0:0100 cs:ip=2000:0008
执行指令jmp 0ff0:0100 cs:ip=0ff0:0100
cs:ip=0ff0:0100 mov ax,2000
读入指令 mov ax,2000 cs:ip=0ff0:0103
执行指令mov ax,2000 ax=2000
cs:ip=0ff0:0103 mov ds,ax
读入指令mov ds,ax cs:ip=0ff0:0105
执行指令mov ds,ax ds=2000
cs:ip=0ff0:0105 mov ax,[0008]
读入指令mov ax,[0008] cs:ip=0ff0:0108
执行指令mov ax,[0008] ax=c389
cs:ip=0ff0:0108 mov ax,[0002]
读入指令mov ax,[0002] cs:ip=0ff0:010b
执行指令mov ax,[0002] ax=ea66
一直有个疑问在汇编语句mov ax,6622中,6622后加H更本就不能执行,为何很多人写汇编语句时还要加H,难道是为了说明他是十六进制?这不是多此一举吗,默认不就是十六进制吗?希望有人能解释
- [silentpassing] 可以通过 mov bh, 0 mov ah, 3 int 10h 得到 06/23 16:17
- [silentpassing] "对于2号功能:(dh)、(dl)=字符串在屏幕上显示的行、列位置"这个结论怎么得到的? 06/23 16:00
- [silentpassing] 定义的栈段在程序结束前的具体存储: 0 1 2 3 45 67 89 AB C 06/15 06:19
- [silentpassing] 在cmd的debug中用g命令即可看到运行结果,直接在cmd中运行该程序,可能看不到结果。建议学习汇 06/14 15:12
- [silentpassing] jmp short、所有条件转移以及循环指令都是段内短转移,段内短转移的跳转范围为-128~127, 06/13 22:40
- [silentpassing] 注意ok之后的是dec bx,而且所填指令要和loop有关,而在loop执行前一个操作是cx减1,如 06/13 21:38
- [silentpassing] mov al,[si+bx] and al,11011111B mov [si+bx],al 06/12 20:35
- [游客] 装个实dos,或是虚拟机下装个实dos。 11/17 11:29
- [silentpassing] 谢谢你的回答 我今天看到第四章了 呵呵 是的 我写的是在debug下输入的 10/28 13:13
- [游客] 你输入的代码是在debug下输入的,它默认是十六进制,所以h省略。 我们常用的是十进制,也就是默认 10/28 10:48
[ 游客 发表于 2010-10-28 10:48 ]
你输入的代码是在debug下输入的,它默认是十六进制,所以h省略。
我们常用的是十进制,也就是默认是十进制(给人钱,都说给10块钱,不说给10D块钱的 呵呵 h代表十六进制 d代表十进制)。我们从第四章开始写.asm,也是默认十进制的,包括你发的这篇文章,所以用十六进制的时候要说明。
[ silentpassing 发表于 2010-10-28 13:13 ]
谢谢你的回答 我今天看到第四章了 呵呵 是的 我写的是在debug下输入的