标题:汇编关于dw的问题
只看楼主
q73025143
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-5-8
结帖率:100%
已结贴  问题点数:20 回复次数:6 
汇编关于dw的问题
题目:


.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] ;   
望解释一下
搜索更多相关主题的帖子: 答案 offset mov 汇编 inc 
2021-06-25 01:59
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:20 
这个答案有问题,与实际不符,其实可以直接编译,在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
2021-06-25 06:06
q73025143
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-5-8
得分:0 
回复 2楼 Valenciax
那请问一下
d dw 1,2,3
是什么意思啊,编译的时候一直报错
2021-06-25 11:12
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:0 
d dw 1,2,3
d[变量名称] dw[定义为字](也有db,dd,qt等代表不同长度) 1,2,3 (表示word值,即0001,0002,0003)

报错可能因为逗号用了全形[,]而不是半形[,] ,汇编所有标点都必须用半形
2021-06-25 20:27
q73025143
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-5-8
得分:0 
回复 4楼 Valenciax
如果dw代表两个字节,是不是就意味着
[0000]和[0001] 是1
[0002]和[0003]是2
[0004]和[0005]是3?
2021-06-27 17:44
q73025143
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-5-8
得分:0 
回复 5楼 q73025143
好吧,我搞错了,回去试了一下
             [0000]=1
             [0001]=0
             [0002]=2
             [0003]=0
             [0004]=3
             [0005]=0
2021-06-27 21:33
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
得分:0 
null

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

2021-08-09 17:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-506080-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.225700 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved