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中的地址相同,只是偶然)。