请教DB指令经过汇编后放的位置?

lttzdllf 2009-02-06 02:51:24
假如有下面的指令
mov bx, 01h
a DB 010h
mov cx,03h
mov ax,02h


经过汇编后DB指令所分配的内存是就放在mov bx, 01h 和 mov cx,03h 这两条机器码之间吗?
如果是放在这两条代码之间的,执行完mov bx, 01h这条指令后,IP寄存器是自动增加的,我想是不是这时IP寄存器就指向了
DB指令所分配的内存,但是DB所分配的内存里放的不是CPU可执行的机器码,如果是这样的话应该会出错 ???

小弟初学汇编,希望大家对这里面的机制指点一二
...全文
411 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lttzdllf 2009-02-06
  • 打赏
  • 举报
回复
ok,明白了,谢谢了
killbug2004 2009-02-06
  • 打赏
  • 举报
回复
在代码中把变量定义在不会执行的地方,这是还可以使用变量但不会影响流程
jmp next
s1 dw 03h
s2 dw 04h
next:
mov ax,s1
mov bx,s2
add ax,bx
cnzdgs 2009-02-06
  • 打赏
  • 举报
回复
对。
CPU执行到这里会把数据作为指令解释执行,如果不存在该指令码,则产生异常。
killbug2004 2009-02-06
  • 打赏
  • 举报
回复
汇编后DB伪指令所分配的内存是在mov bx, 01h 和 mov cx,03h 这两条机器码之间,cpu会把从db 010h这里开始译码,如果db定义的数据(机器码)有效,那么这里定义的数据将会当作数据对应的指令执行,否则程序执行到这里会出错

在代码段定义数据,有点像直接使用机器码编程,cpu执行到定义的数据的位置,定义的数据会当成机器码来执行
xiaopoy 2009-02-06
  • 打赏
  • 举报
回复
是.
很少有不能执行的机器码,而只是错误的流程。0x10这种数串多可以执行。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧