Assembly 需要了解此代码的帮助(Z80汇编程序)

Assembly 需要了解此代码的帮助(Z80汇编程序),assembly,z80,Assembly,Z80,我试着看了一下我的文档,但是它真的很混乱,我需要在考试时理解它,但是我遇到了很多麻烦 aseg 组织100小时 开始:ld ix,矢量 ld B,金额 ld A,0 循环:添加一个(IX) jp PE,失败 第九公司 djnz循环 劳工处(resp),A 财政司司长 失败:ld A,1 ld(错误),A 鳍:rst 38h 矢量:db 12,7,9,21 金额等值向量 响应ds 1 错误:db 0 结束-开始 我了解大多数“功能”(ld、add、jp、inc)分别做什么,但我不了解的是: 1)

我试着看了一下我的文档,但是它真的很混乱,我需要在考试时理解它,但是我遇到了很多麻烦

aseg
组织100小时
开始:ld ix,矢量
ld B,金额
ld A,0
循环:添加一个(IX)
jp PE,失败
第九公司
djnz循环
劳工处(resp),A
财政司司长
失败:ld A,1
ld(错误),A
鳍:rst 38h
矢量:db 12,7,9,21
金额等值向量
响应ds 1
错误:db 0
结束-开始
我了解大多数“功能”(ld、add、jp、inc)分别做什么,但我不了解的是:

1) 第一行的IX中加载了什么值?(变量?)向量上有4个值,我在z80模拟器中试过,它说IX得到值0019,但我不知道这是从哪里来的

2) 我是否正确理解“vector:db12,7,9,21”创建了一个值为12,7,9,21的数组

3) “结束-开始”行是做什么的


4) “金额”持有的价值是多少?

让我们一次拿一个:

1) 第一行的IX中加载了什么值?(变量?)向量上有4个值,我在z80模拟器中试过,它说IX得到值0019,但我不知道这是从哪里来的

ld ix,vector
将vector的内存地址加载到
ix
。当您看到
0019
显示在模拟器中时,您看到的是从程序开始的字节偏移量。这实际上被用作指向该“数组”中第一个元素的指针

2) 我是否正确理解“vector:db12,7,9,21”创建了一个值为12,7,9,21的数组

你可以这样看。它真正做的就是在RAM中定义四个任意字节,并提供一个方便的标签来确定它们的位置。数据的解释方式决定了它是数组、四个字符、两字节整数还是四字节整数,等等

3) “结束-开始”行是做什么的

这只是对汇编程序的一个指令。它实际上对汇编代码没有任何作用。它让汇编程序知道不应该有更多的代码出现

4) “金额”持有的价值是多少


Amount是在编译时计算的定义值(而不是分配的内存)。汇编程序中的
$
通常指的是当前地址。因此,
Amount
被定义为当前地址和
vector
开始的地址之间的差异。在本例中,由于定义了四个字节,因此将计算为4。

是否有公司或学校实际使用z80!?这在1983年就过时了。@wallyk TI仍在使用它们,在他们的一些图形计算器中。@JoseManuelAbarcaRodríguez见。。。如果您将您的用户与另一个站点关联,您将获得100个代表。您将等待获得足够的重新打开投票:)同时,1)加载
向量的地址
2)是3)发出代码结束的信号,并将
start
设置为入口点4)向量的长度,这可能是一个复制粘贴错误,因为它应该是
amount
(正如前面加载的那样)
vector
是一个标记地址的标签(就像书签一样)。它不知道也不在乎你用它来做列表。因此,它是第一个元素的地址(与C中的地址相同,只是偶然)。