旧的Assemblycode仍然可用吗?

问题描述:

我发现一本关于旧x86处理器的旧书,其中包含一些汇编代码片段。旧的Assemblycode仍然可用吗?

其中的一个代码片断是:

LDA 4567H 
ADI A,56H 
STA 0567H 

所以我复制的代码以这样的构建体

.data 
.global main 
main: 
    LDA 4567H 
    ADI A,56H 
    STA 0567H 
    leave 
    ret 

和接收的消息:

  • 错误:指令lda未知
  • 错误:指令ADI未知
  • 错误:指令STA未知

所以,我有点糊涂了。我一直认为,英特尔代码与所有英特尔处理器兼容(即使是最古老的处理器)。 这是正确的还是我做错了什么?

+0

可能与nasm? –

+3

这可能是8080代码,与8086不兼容 – harold

+1

累加器在8位宽时被命名为“A”,当扩展为16位时被命名为“AX”,在32位时被命名为“EAX” 64位。从1980年左右开始的汇编代码最近没有多少要求。 –

concerning the old x86 processor

它不是x86代码。这是从8086年代之前的8080年代开始的。他们是8位处理器。

I always thought, that Intel-Code is compatible to all Intel processors

保持8位指令集是不现实的。尽管如此,英特尔确实确保将8080汇编代码转换为8086相对容易。您可以购买一个程序来处理这个问题。可能最为人所知的是在CP/M上运行的XLT86 from Digital Research以及在其MCS-86开发系统上运行的Intel's CONV86。提供的手册链接。找到一份副本并运行它肯定会需要去博物馆旅行。

+0

另一方面:你将如何处理PC上的8080代码?如果我理解正确,'LDA 4567h'指令将等于'MOV AL,[4567h]'。然而,地址'4567h'在MS-DOS PC上的含义完全不同于在基于8080的CPM机器上 - 甚至没有谈到32位操作系统...... –

+0

请给手册快速阅读。他们翻译汇编,而不是机器代码。所以它会说LDA foobar。 4567h仍然没有问题,它与DS段寄存器相关。 –