以下是 sic/xe 机器的汇编语言代码....
clear a
ldx #128
loop jsub getc
rmo a,s
shift s,4
jsub getc
addr s,a
stch 0,x
tixr x,x
j loop
getc td input
jeq getc
rd input
comp #4 ;if input is 4 then eof
jeq 80 ;jump to start of program
comp #48 ; compare to charcter 0
jlt getc ;skip charcters less than 0
sub #48
comp #10 ;if result is less than 10, conversion is complete
jlt return
sub #7 ;for hex digits A through F
return rsub
input byte x'F1'
这是一个引导加载程序...该程序的目的是从设备 F1 读取并将输入存储在从 80 开始的地址...现在我的问题是,当我们为什么需要执行 shift s,4.. .当我们接受一次输入时,我们从它的ascii值中找到它的原始值,然后将它发送到'loop'来存储它......从程序看来,只有前半字节的字符被发送到循环,然后其他...如果这是事实,那么首先会有字符的前半字节,因此前半部分的 ascii 操作不会给我们输入的实际值...当程序返回到 'getc ' 获取另一半字节不会读取列表中的其他字符...以下是同一本书中的一行以寻求帮助...
each byte of the code to be loaded is on device F1 as two hexadecimal digits