【问题标题】:Assembly Language Program to Print First Name打印名字的汇编语言程序
【发布时间】:2016-03-08 01:14:24
【问题描述】:

我正在尝试编写一个打印名字的汇编语言程序,例如 Thomas。程序底部应该使用.ASCII伪操作来存储字符,输出字符使用CHARO指令。当我看教科书中的一个例子时:

;Stan Warford

;January 13, 2009

;A program to output "Hi"

;

CHARO   0x0007,d   ;Output 'H'

CHARO   0x0008,d   ;Output 'i'

STOP  

.ASCII  "Hi"

.END

这会正确输出“Hi”。但是,当我尝试编写一个输出的程序时
托马斯,这行不通。我有什么:

CHARO       0x0004 ,d   ;output T
CHARO       0x0005 ,d   ;output h
CHARO       0x0006 ,d   ;output o
CHARO       0x0007 ,d   ;output m
CHARO       0x0008 ,d   ;output a
CHARO       0x0009 ,d   ;output s
STOP
.ASCII      "Thomas"
.END

当我运行它时,没有任何东西输出到屏幕上。我正在尝试在Pep/8 simulator 上运行它。我在这里错过了一些非常明显的东西吗?使用 CHARO 命令时,我需要从一个特定的十六进制值开始 - 例如,0x0007?提前感谢您的建议。

【问题讨论】:

    标签: assembly pep8-assembly


    【解决方案1】:

    我从未使用过 pep8,但根据文档,这些变体可以工作:

    CHARO       0x0013,d
    CHARO       0x0014,d
    CHARO       0x0015,d
    CHARO       0x0016,d
    CHARO       0x0017,d
    CHARO       0x0018,d
    STOP
    .ASCII      "Thomas"
    .END
    

    或:

    CHARO   'T',i
    CHARO   'h',i
    CHARO   'o',i
    CHARO   'm',i
    CHARO   'a',i
    CHARO   's',i
    STOP  
    
    .END
    

    STRO msg,d
    STOP
    msg: .ASCII "Thomas\x00"
    .END
    

    【讨论】:

    • 谢谢你。这里可能是一个愚蠢的问题...但是对于您建议的第一个变体,为什么它必须以 0x0010 ,d 开头?
    • 0x10 - 是第一个字母T的地址
    • 我在模拟器上试过了,它只打印Tho。很奇怪。
    • 我也试过用不同的 ASCII 字符串,不管字符串是什么,它仍然只打印前三个字符。
    • @CSstudent其实很奇怪,让我下载看看
    【解决方案2】:

    这是正确的代码,以名字“Miranda”为例:

        CHARO 0x0016 ,d ;output M
        CHARO 0x0017 ,d ;output i
        CHARO 0x0018 ,d ;output r
        CHARO 0x0019 ,d ;output a
        CHARO 0x001a ,d ;output n
        CHARO 0x001b ,d ;output d
        CHARO 0x001c ,d ;output a
        STOP
        .ASCII "Miranda"
        .END
    

    【讨论】:

      猜你喜欢
      • 2013-06-21
      • 2022-10-18
      • 2017-03-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多