已知(DS)=1000H,数据变量SUV为0050H,则指令MOV AX,SUV的功能是什么?

来源:百度知道 编辑:UC知道 时间:2024/09/23 19:18:13
MOV AX, OFFSET SUV这一句是将地址存入AX中,也就是(AX)=10050H,而不是10050H所指的内容!????
是不是把0050H送入AX啊,不应该是10050H(20位)吧
按你说的MOV AX, OFFSET SUV和MOV AX, SUV功能就相同了
书上说MOV AX,SUV是将DS段有效地址是SUV起始的连个单元内容送入AX啊
这些小细节还望磋商

是将内存数SUV送向AX寄存器。最后(AX)=0050H。单这一句是只是一个指令,不存在什么功能的!

在语言上不会区分什么是地址和数据的,只存在数据不存在地址一说,不管SUV是什么该句都是将SUV的值放入到AX中,其实你可以理解为地址也是一个数值的!而存入地址是我们是这样使用的:
MOV AX,[SUV]
这表示将SUV所指地址的内容放入到AX中!也就是(AX)=(DS:SUV)=(10050H)而不是SUV中的值。否则还有一句!
MOV AX, OFFSET SUV这一句是将地址存入AX中,也就是(AX)=10050H,而不是10050H所指的内容!理解一下这三句话的区别就可以了!

不会是相同的,这里你要理解的地址与数据是没有区别的,我只有再说一次:送内容与要送的地址在MASM中是这样的,不是指的NASM。offset是移移地址,一般我们对于DS等段的装入时这样作:
(假定SUV在DS段中)
mov ax, seg suv
mov ds,ax
这个可以将段地址送入DS中,因为立即数和内存数是不允许直接入段寄存器的!
而如果送入偏移地址的话,就用OFFSET 就可以了,偏移地址实际上在加上真实地址才是真正的物理地址。SUV中的内容是050H时,其偏移地址并不见得是这个,我只是说一个例子,也可能我没有说清,如在段地址开如处有以下程序段时:
org 100H
suv db ?
显然此时的段地址是ds,假定已经装入,当然也可以用seg来进行装入。offset suv的结果是100H,所以送入AX中中的是100H这个数据,而非所存的内容?,而用mov ax, suv时,则装入AX的是?这个ASCII码值,在汇编时数据与数值也是没有区别的!而Offset与[]的区别一个是指的标签,另一个是地址,再说一句你可能明白,offset是伪指令,不是汇编所识别的,而是汇编程序所支持的,在第一次扫描时分析的,而[]是汇编指令,在任何汇编程序下都能识别的!不管是MASM还是NASM都可以,它是在最后一次扫描完成的。