汇编语言指令数据存放及数据位置的表达

机器指令处理的数据在什么地方

绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类:读取、写入、运算。在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口(端口将在后面的课程中进行讨沦),比如表8.1中所列的指令。

511遇见

mov bx,[2]  ;数据处于内存中ds:2单元
mov ax,bx   ;数据处于cpu内部,bx寄存器中
mov ax,5    ;数据处于cpu内部,指令缓冲器中

汇编语言中数据位置的表达

在汇编语言中如何表达数据的位置?汇编语言中用3个概念来表达数据的位置。

(1)立即数(idata):包含在指令中的数据,执行前在cpu的指令缓冲器中。
对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为:立即数((idata),在汇编指令中直接给出。

mov ax,1
add bx,2000h
or  bx,00010000b
mov al,'a'

(2)寄存器
指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。

mov ax,bx
mov ds,ax
push bx
mov ds:[0],bx
push ds
mov ss,ax
mov sp,ax

(3)段地址(SA)和偏移地址(EA)
指令要处理的数据在内存中,在汇编指令中可用[x]的格式给出EA, SA在某个段寄存器中。
存放段地址的寄存器可以是默认的,比如

mov ax,[bp]
mov ax,[bp+8]
mov ax,[bp+si]
mov ax,[bp+si+8]

等指令,段地址默认在ss中

mov axds:[bp]         含义:(ax)=((ds)*16+(bp))
mov ax es:[bx]        含义:(ax)=((es)*16+(bx))
mov ax,ss:[b又+si]    含义:(ax)=((ss)*16十(bx)+(si))
mov aX,cs:[fbx+si+8]  含义:(ax>=((cs) *16+(bx)+(si)+8)

发布日期:

所属分类: 编程 标签:  


没有相关文章!