#牛客在线求职答疑中心# 仿照例2.1,画出以下数据段的存储映像图(图中所有数据均用十六进制表示),并指出符号常量N 1和N2所代表的值。
DATA SEGMENT
DAT1 DB 58, -84, 12*6-8, 10000110B
N1= $-DAT1
DAT2 DW 40C6H, 20H, 6E7H
DAT3 DB 4, ? ,4 DUP(0)
N2=(DAT3-DAT2)/2
DATA ENDS
DATA SEGMENT
DAT1 DB 58, -84, 12*6-8, 10000110B
N1= $-DAT1
DAT2 DW 40C6H, 20H, 6E7H
DAT3 DB 4, ? ,4 DUP(0)
N2=(DAT3-DAT2)/2
DATA ENDS
全部评论
在这个问题中,我们需要根据给定的数据段来画出存储映像图,并确定符号常量 N1 和 N2 的值。首先,让我们分析数据段的内容:
```assembly
DATA SEGMENT
DAT1 DB 58, -84, 12*6-8, 10000110B
N1= $-DAT1
DAT2 DW 40C6H, 20H, 6E7H
DAT3 DB 4, ? ,4 DUP(0)
N2=(DAT3-DAT2)/2
DATA ENDS
```
1. DAT1 是一个字节(DB)数据定义,包含以下值:
- 58 (十进制的 88)
- -84 (在汇编中通常表示为补码形式,十六进制为 0x4C)
- 12*6-8 (计算结果为 64,十六进制为 0x40)
- 10000110B (二进制直接表示,十六进制为 0x86)
2. N1 是 DAT1 的偏移量。
3. DAT2 是一个字(DW)数据定义,包含以下值:
- 40C6H (十六进制)
- 20H (十六进制)
- 6E7H (十六进制)
4. DAT3 是一个字节(DB)数据定义,包含以下值:
- 4
- ? (未初始化的数据)
- 4 DUP(0) (重复4次0)
5. N2 是 DAT3 和 DAT2 之间的偏移量除以2。
现在,让我们画出存储映像图:
```
内存地址 | 数据
-----------------
0000 | 58
0001 | 4C
0002 | 40
0003 | 86
0004 | 40C6
0006 | 0200
0008 | 06E7
000A | 04
000B | ? (未初始化)
000C | 00
000D | 00
000E | 00
```
根据上面的存储映像图,我们可以计算 N1 和 N2 的值:
- N1 = $ - DAT1 = 当前地址 - DAT1 的起始地址 = 0004 - 0000 = 4 (十进制)
- N2 = (DAT3 - DAT2) / 2 = (000A - 0004) / 2 = 6 / 2 = 3 (十进制)
所以,符号常量 N1 的值是 4,N2 的值是 3。
相关推荐
点赞 评论 收藏
分享
09-18 21:13
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享