Assembly 我应该编写一个汇编级程序,使用LDBA指令和PEP9中的直接寻址打印我的名字

Assembly 我应该编写一个汇编级程序,使用LDBA指令和PEP9中的直接寻址打印我的名字,assembly,pep8-assembly,Assembly,Pep8 Assembly,因此,在Pep 9中有一个打印.ascii“hi”的方法示例 我试图使用名称逻辑来写我的名字,但输出显示了奇怪的字符:ñ 有人能给我解释一下为什么这个逻辑不起作用,我希望有人能把我引向正确的方向 ;Stan Warford ;May 1, 2016 ;A program to output "Hi" ; LDBA 0x000C,d ;Load byte accumulator 'A' STBA 0xFC16,d

因此,在Pep 9中有一个打印.ascii“hi”的方法示例

我试图使用名称逻辑来写我的名字,但输出显示了奇怪的字符:ñ
有人能给我解释一下为什么这个逻辑不起作用,我希望有人能把我引向正确的方向

;Stan Warford   
;May 1, 2016   
;A program to output "Hi"   
;   

         LDBA    0x000C,d    ;Load byte accumulator 'A'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x000D,d    ;Load byte accumulator 'r'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x000E,d    ;Load byte accumulator 'i'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x000F,d    ;Load byte accumulator 'e'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x0010,d    ;Load byte accumulator 'l'
         STBA    0xFC16,d    ;Store byte accumulator output device
         STOP                ;Stop
         .ASCII  "Ariel"        ;ASCII "Ariel" characters
         .END

0xd不是
'H'
的ASCII码。这是来自内存地址的加载,而不是立即加载吗?你是用什么源代码构建的?您可能应该在字符串的开头有一个标签,这样您就可以让汇编程序引用其中的地址。对不起,我修复了它。是的,它使用直接寻址模式从内存加载一个字节。第一组汇编代码是本书中的一个示例。我复制/粘贴到pep9上,运行它,它打印出“Hi”地址是硬编码的,但是第二个版本在字符串之前有更多的指令字节。因此,字符串的开头位于不同的地址。这就是为什么普通汇编语言使用标签,例如
msg:.ASCII“Ariel”
,因此您可以编写类似
ldba msg+2,d
的指令,一旦汇编程序知道
msg
在内存中的起始位置,它就会填入正确的地址。“msg”是否像一个变量?为什么要编写msg+2?只需编写LDBA msg,d,代码就可以正常运行,并在控制台中输出0000。LDBA msg+2,d可能有不同的语法。
;Stan Warford   
;May 1, 2016   
;A program to output "Hi"   
;   

         LDBA    0x000C,d    ;Load byte accumulator 'A'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x000D,d    ;Load byte accumulator 'r'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x000E,d    ;Load byte accumulator 'i'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x000F,d    ;Load byte accumulator 'e'
         STBA    0xFC16,d    ;Store byte accumulator output device
         LDBA    0x0010,d    ;Load byte accumulator 'l'
         STBA    0xFC16,d    ;Store byte accumulator output device
         STOP                ;Stop
         .ASCII  "Ariel"        ;ASCII "Ariel" characters
         .END