是这样,b8
34
12这样的字节内容计算机既可以解释成数据也可以解释成代码,就看哪个段寄存器中,如果是保护模式,就看它是放在哪个段中。举个例子,8086CPU汇编当CS:IP指向某个被命名为codesg的段,你想让CPU执行你指定的机器码,就在这个段定义这些数据就成了。例如如下代码
assume
cs:codesg,ds:data
data
segment
db
b8
34
12
;你定义的数据,它被CPU理解为数据
data
ends
codesg
segment
begin:
db
b8
34
12
;这就是你要执行的机器码
mov
ax,data
mov
ds,ax
.......
;之后你要写的指令,当然也可以定义你要执行的机器码
codesg
ends
end
begin
懂了吧,像诸如db
b8
34
12这样的数据,CPU如何理解它全看它被哪个段寄存器指向
汇编语言,包括所有的指令、伪指令。
指令,可写成助记符,这是给人看的。
指令,也可写成机器码,这是给
cpu
看的。
指令的助记符和机器码,是一一对应的。
伪指令则没有对应的机器码。