文件名称:古老的8085汇编器
文件大小:62KB
文件格式:RAR
更新时间:2016-02-28 07:54:13
古老的 8085 汇编器
古老的8085汇编器 看看先贤们在古老的年代(作于1988年)所写的古老的8085汇编器(BTW:8085是intel的8位的微处理器,比8086/8088还要古老),明显的2遍扫描的处理方式,将汇编语言转换为机器语言,输出文件为.lst和.hex文件。 代码结构简洁,有效文件仅有6个,容易研读和分析,研读时候需要找到8085的datasheet,以便分析每条指令的意义和程序的汇编过程。 asm80 |-- [Apr 21 1988] Makefile |-- [Apr 21 1988] README |-- [Apr 21 1988] as81.c |-- [Apr 21 1988] as82.c |-- [Apr 21 1988] as83.c |-- [Apr 21 1988] as85.c |-- [Apr 21 1988] asm.c |-- [Apr 21 1988] asm.h |-- [Apr 21 1988] asm80.1 `-- [Apr 21 1988] asm80.doc 0 directories, 10 files 代码包含有3个压缩文件 -rw-r--r-- 1 root root 25362 Dec 4 2001 asm80.tar.Z -rw-r--r-- 1 root root 16795 Oct 7 23:57 asm80.tar.gz -rw-r--r-- 1 root root 21523 Oct 18 12:56 asm80-121018.tar.gz 其中的asm80.tar.Z是原封不动的原始的代码用Linux环境下的编译器稍微做改动放可编译通过 解压方式: tar zxvf asm80.tar.Z 其中的asm80.tar.gz是稍微做改动可在Linux环境下的编译器编译通过的代码包,改动点只有一处, 位于asm.h文件的15行,改动如下(原有的代码注释保留,改动后的放在其下面。): //#define putback(c) ((c) != '\0' && --sptr < sbuf && abort()) #define putback(c) ((c) != '\0' && --sptr < sbuf && ({abort();0;})) //snallie@tom.com, Sun Oct 7 22:38:47 CST 2012 编译过程如下 [root@localhost dd]# tar zxf asm80.tar.gz [root@localhost dd]# cd asm80 [root@localhost asm80]# make cc -O -c -o asm.o asm.c cc -O -c -o as81.o as81.c cc -O -c -o as82.o as82.c cc -O -c -o as83.o as83.c cc -O -c -o as85.o as85.c cc -O asm.o as81.o as82.o as83.o as85.o -o asm80 使用asm80 汇编a.asm,生成a.lst以及a.hex [root@localhost asm80]# ./asm80 -l a.asm Total bytes assembled = A20D [root@localhost asm80]# more a.lst a.asm KSE cross assembler for the 8080 page 1 1 ; 2 ; a.asm , a 8080 asm source file 3 ; snallie@tom.com 4 ; Sun Oct 7 22:38:47 CST 2012 5 ; 0100 6 org 100H 0100 7 start: 0100 160A 8 mvi d, 0AH 0102 0E0B 9 mvi c, 0bH 0104 3E00 10 mvi a, 0 0106 CD00A2 11 call subRoutine 0109 00 12 nop 010A C30E01 13 jmp exit 010D 00 14 nop 010E 15 exit: 010E 76 16 hlt 17 A200 18 org 0a200H A200 19 subRoutine: A200 80 20 add b A201 81 21 add c A202 00 22 nop A203 C9 23 Ret 24 A204 25 bufByte: A204 01 26 db 1 A205 27 bufWord: A205 01000200 28 dw 1,2,3,4 A209 03000400 A20D 29 End start ^L a.asm Symbol table dump Page 1 bufbyte = A204 bufword = A205 start = 0100 exit = 010E subroutine = A200 ^L [root@localhost asm80]# more a.hex :0F010000160A0E0B3E00CD00A200C30E010076C2 :0DA20000808100C90101000200030004007C :00000000 [root@localhost asm80]# 其中的asm80-121018.tar.gz对代码做了加大改动,并加入的测试的用例及研读的注释,增加的若干的伪指令。 这个编译器的指令表为对指令名按字典序排序的,需要增加新的伪指令是要注意,加入新指令后仍然要保持按字典序排序。 === 古老的经典代码,让你温故而知新。
【文件预览】:
asm80.tar.Z
asm80.tar.gz
asm80-121018.tar.gz