如何在Assembler中找到寄存器和标志的值?

时间:2016-01-16 21:05:55

标签: z80

 Programmcode | Zero-Flag | Sign-Flag | Register A | Register HL
              |     0     |     0     |     00h    |    00 00h
--------------|-----------|-----------|------------|------------
MOV HL, 00ffh |           |           |            |
DEC HL        |           |           |            |
ADD 81h       |           |           |            |
CP A          |           |           |            |
SUB 02h       |           |           |            |

我在MC8-Assembler中有部分程序(MC8的CPU由训练板的8位处理器Zilog Z80组成)执行后会有什么值,在寄存器中找到什么值?执行前的值在第一列中给出。

有人可以做+写一个解释吗?

1 个答案:

答案 0 :(得分:1)

英特尔称之为MOV,Zilog称之为LD;否则你可以通过查看例如this instruction table

在Zilog术语中,

MOV HL, 00ffhLD HL, 00ffh,因此请查找相应的LD HL。它是0x21指令,它告诉你它将值加载到HL中并且不会影响任何标志。这是第一排排序。在0x2b处的DEC HL也不会影响任何标志(对于记录而言几乎总是会抓住我),但是ADD A,*这样做,那么标志和零可能会改变,这取决于你认为发生了什么甲

只要依次查看每条指令,看看它做了什么,做那件事,然后考虑如果这是一条影响标志的指令会有什么标志。