从零开始学计算机语言

作者:hjjdebug
时间:2005-7-9      
很久以前的笔记,整理了一下。
一: 怀念z80 时代

    (一): 刀耕火种 tp-801 单板机
    
    z80 cpu 是80 年代流行的产物,用 tp-801 单板机开发 ...
    开发流程如下;
    1。 编写汇编原程序。
        别忘了,那时pc机可是奢侈品。 80年代末才在中国各大院校
        始露身影。 那怎么编写, 忘本了吧,用纸和笔呀。
        
        旁边放上一本汇编指令集,开始书写了,
        mov ....
        ld  ....
        add ....
        
        很简单吧,没有人检查你的语法错误。
        
    2。 录入程序
    
        tp-801 单板机, 比起我们当今pc机来, 那可是差远了。
        这还是一个刀耕火种的年代。啊! 是机器码录入 ?!
        
        再拿回那本指令集,好,左边是汇编指令,右边是对应的机器码。
        开始录入啦。
        tp-801 有一个5 * 5 的键盘 (具体几个记不清了),有六个led数码管显示。
        记得我录入的时候,旁边的一个小工人说看着象小学生玩算术,气得一位老
        师傅说:“你懂什么呀! 这是高科技。”
        
        关于伪指令吗!很简单,
            碰到org 指令,我们就从新的地址开始录起。
            碰到ds指令,也只是计算一下下一次应该录入的地址。谁计算 ? 你自己计算啦
                        要不你就保留足够地址空间,重新从下一地址录入数据。
            碰到db,或dw 指令,你就把后边跟着的数据依次添入内存就好了。
        
        怎么样,伪指令还是比指令简单,因为它不需要查看旁边的指令集对照表。
        
        录入指令:
            旁边有表呢,对照着来吧。
            糟糕,碰到了一个相对跳转指令,我还得去数跨越的指令字节数。
                太容易出错了。先用零带着吧,最后再统一处理。
            慢!我的准备一张白纸,把这个地址几下来,将来好回过头来改呀。
                它跳转到什么地方也要记下来。否则我怎么知道添多少偏移值呢。
                
            哎!还是太烦人,往回眺,我得向前翻一翻看看指令码才知道确定
                的地址,向后跳,目前还没有录到那里,具体地址还未确定,
                不要自己数,那不又回去了吗,先用个0000 或 ????在纸上
                代着吧。录完了程序再统一确定目的地址。
            
            总算有了方法,按这种方式把几k的程序都录进去了。
            
        重定位指令:
            程序都已经录进去了,但是那些跳转指令还都用0代着呢,需要添上
            真实的数据
            1。 现在把目的地址都找出来吧。 怎么找 ? 就是用那个 next,next
                按键翻指令码,与你书写的那个汇编带指令的那个原文件比较啊。
                别嫌烦,刀耕火种的年代。(别人也认为是高科技呢!自我安慰一下.)
                
                好,现在终于把纸面上的目的地址栏中的 ???都添好了。
                
            2. 重定位指令中数据
                tp801 这个小监控终于也帮了点小忙,不用我们手工计算偏移量再
                填入对应地址,而是用了一个disp 的按键帮我们完成。不过说实话
                这点忙帮得实在是太少了。
                
                具体功能是这样的,输入被定位的地址,敲一下mon键,敲入目的地址,
                敲一下disp键,监控会把这个骗移量添入到被重定位的位置。
                
        好,大功告成,终于可以运行程序了!
        上帝保佑,一定要一次成功啊!否则我又要录入代码,最讨厌那个重定位指令。
        敲入 2000,按一下run键看看 ...
        
        按mon键停下来(我记得你的程序一定要是一个循环,这样mon打断时,程序执行到
        该循环处。
        
            运行结果不对,重新修改程序,哎,头都大了!
            monitor 还是提供了一些帮助,用memory mov 命令,将程序整体下移可腾出
            空间添加指令,注意,要更新那个旁边放着的displace 地址表啊!
            其目的主要是保证,受影响的指令骗移量一定应该是正确的。
            也有直接使用程序地址的,也要保证地址在程序修改后正确。
            
    (二): tp-801 单板机的发展。
        
        我见到过z80 的较高级的开发器,是莫研究所做的。其高级体现在:
        
        1。改进输入设备。 将原来的 0-f 16个数字键输入,(5 * 5)键盘,扩充为
            字母,数字,混合输入。可称为是类pc 键盘了。
            
        2。改进的输出设备。
            采用了lcd显示器,取代了6个7段数码显示管。当然,它不仅可以显示数字
            而且可以显示字母,(点阵式液晶屏,图形也是可以显示的).
            好象是两行还是三行显示。
            
        3. 改进的外围接口设备,已经支持与pc机的连接,这实际上通过pc而扩大了
            它的使用方便性。也扩充了它的能力,例如编辑能力。
            而tp801 当时通过它的mouth,和 ear插口,可以与录音机相连。这个功能
            已经被取消了。
            
        4。 增强的编辑和监控能力
        
            在它的内存中,已经开辟出了一块编辑区,我们可以直接通过键盘修改
            汇编语言源程序而不是二进制代码了。
            
    独立仿真器的结局:
                
            它带来的一个好处,首先我们不用旁边放一张指令集表,直接录入汇编就行了.
            是不是支持符号地址,如何实现重定位,我没有机会玩这个开发器,所以
            就不知道了.
            
            这个开发器应该值多少钱呢? 记得tp801 当时卖 800, 我5个月的工资.
            该开发器对我就是天价了,它终于没有流行起来,主要原因,还是思路不对,这种
            具有独立开发能力的开发器都会败下阵来.它们是败给了pc电脑.
            
            编辑监控能力再强,能超的过pc吗?,所以现在的防真器,都是与pc联姻的,
            只做自己相关的部分,而把编辑,编译,连接,调试流给了pc.
            
下一篇: 小汇编时代地址定位问题 .        
            
            

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值