求助各位高手,请问当是否当定义的数据的长度超过使用MOV指令目的寄存器大小时就需要进行OFFSET指令?
求助各位高手,请问当是否当定义的数据的长度超过使用MOV指令目的寄存器大小时就需要进行OFFSET指令?例如程序一种直接MOVAX,BUF即可,而程序二中需要用BX获取S...
求助各位高手,请问当是否当定义的数据的长度超过使用MOV指令目的寄存器大小时就需要进行OFFSET指令?例如程序一种直接MOV AX,BUF即可,而程序二中需要用BX获取STRING的偏移地之后,再MOV AX,[BUF],各位高手帮忙解答下?
程序一
DATA SEGMENT
BUF DW 3456H
DATA ENDS
CODE SEGMENT
ASSMUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV AX,BUF
CODE ENDS
程序二
DATA SEGMENT
STRING DB 'THIS IS A STRING'
DATA ENDS
CODE SEGMENT
ASSMUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET STRING
MOV AL,[BX]
CODE ENDS 展开
程序一
DATA SEGMENT
BUF DW 3456H
DATA ENDS
CODE SEGMENT
ASSMUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV AX,BUF
CODE ENDS
程序二
DATA SEGMENT
STRING DB 'THIS IS A STRING'
DATA ENDS
CODE SEGMENT
ASSMUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET STRING
MOV AL,[BX]
CODE ENDS 展开
1个回答
展开全部
这要看书的,好好理解指令的意思。mov 指令就是传递数据,offset只是表示偏移位置,两者没有关系的。
例一中BUF恰好定义成字,ax寄存器大小也是字,所以可以MOV AX,BUF,这个例子中BUF要是定义的数据比较多,比如BUF DW 3456H,1234H,453H
那么你想送那个字到ax寄存器中也还是要考虑offset的,例如要想把453H送入ax
mov bx,offset buf
mov ax,[bx+4] 这是因为453H在以BUF为偏移的4字节处。
例二中MOV BX,OFFSET STRING就是表示把STRING的偏移地址送到bx寄存器中。
MOV AL,[BX]表示把STRING的偏移地址开始处的内存一个字节送给al寄存器。
例一中BUF恰好定义成字,ax寄存器大小也是字,所以可以MOV AX,BUF,这个例子中BUF要是定义的数据比较多,比如BUF DW 3456H,1234H,453H
那么你想送那个字到ax寄存器中也还是要考虑offset的,例如要想把453H送入ax
mov bx,offset buf
mov ax,[bx+4] 这是因为453H在以BUF为偏移的4字节处。
例二中MOV BX,OFFSET STRING就是表示把STRING的偏移地址送到bx寄存器中。
MOV AL,[BX]表示把STRING的偏移地址开始处的内存一个字节送给al寄存器。
上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
2022-05-15 广告
绝对脉冲编码器编码器两者一般都应用于速度控制或位置控制系统的检测元件. 旋转编码器是用来测量转速的装置。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有),和供电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路...
点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询