注册 登录
编程论坛 汇编论坛

汇编关于dw的问题

q73025143 发布于 2021-06-25 01:59, 7579 次点击
题目:


.DATA    [5 marks]
d dw 1,2,3
.CODE
.STARTUP
mov bx,offset d   
inc bx
inc bx   

mov ax,1        
shl ax,1    ;    A
add ax,d    ;    B
mov ax,bx    ;    C
mov ax,[bx] ;   D
.EXIT   

答案为:A:ax=2,B:ax=2,C:ax=-4,D:ax=2
不太明白的段落:
 d dw 1,2,3;
 mov bx,offset d   
mov ax,[bx] ;   
望解释一下
6 回复
#2
Valenciax2021-06-25 06:06
这个答案有问题,与实际不符,其实可以直接编译,在DEBUG中看就明白编译器如何解释指令

只有本站会员才能查看附件,请 登录



mov bx,offset d ;bx=0 ;取D的地址
inc bx        ;bx=1
inc bx        ;bx=2

mov ax,1     ;ax=1      
shl ax,1     ;A: ax=2
add ax,d     ;B: 被编译为ADD AX,[0001],就是D的值,ax=ax+0001=3
mov ax,bx    ;C: ax=2
mov ax,[bx]    ;D: ax=[0002]=取[0002]里的值=0002
#3
q730251432021-06-25 11:12
回复 2楼 Valenciax
那请问一下
d dw 1,2,3
是什么意思啊,编译的时候一直报错
#4
Valenciax2021-06-25 20:27
d dw 1,2,3
d[变量名称] dw[定义为字](也有db,dd,qt等代表不同长度) 1,2,3 (表示word值,即0001,0002,0003)

报错可能因为逗号用了全形[,]而不是半形[,] ,汇编所有标点都必须用半形
#5
q730251432021-06-27 17:44
回复 4楼 Valenciax
如果dw代表两个字节,是不是就意味着
[0000]和[0001] 是1
[0002]和[0003]是2
[0004]和[0005]是3?
#6
q730251432021-06-27 21:33
回复 5楼 q73025143
好吧,我搞错了,回去试了一下
             [0000]=1
             [0001]=0
             [0002]=2
             [0003]=0
             [0004]=3
             [0005]=0
#7
自由而无用2021-08-09 17:18
null

[此贴子已经被作者于2021-11-4 18:16编辑过]

1