大写到小写转换

时间:2019-04-16 07:50:40

标签: assembly lc3

View of Problem

编写一个LC-3汇编语言程序,将ASCII字母从大写转换为小写。要转换的字母(ASCII)存储在内存地址0x4000中,并在下面的代码窗口中提供(字母'S')。结果应存储在寄存器6(R6)中,还应保存到存储单元0x4001中。提示:由于(符号扩展)立即数字段的长度有限(5位),因此您需要多个操作指令来执行转换。

编辑: 每次尝试运行程序时,它都会给我同样的错误,本质上说我一开始没有做任何事情,我认为我首先获取内存地址的方式存在问题,但是,我不确定。

1 个答案:

答案 0 :(得分:0)

如果您查看此table,将会发现小写字符可以这样描述: 前3位始终为010。 其余的位表示字母。

如果用010替换前3位,则会得到小写字母。

因此,您需要用(010)替换保存“ S”的寄存器的前3位,以获得“ s”。

此代码的作用是切换第三位。大写字母因此变成小写字母。

.orig x3000
; XOR:
; field is R0
; R1 is mask of bits to toggle
; R2 is scratch
LDI R0, 0x4000 ; load whatever is at x4000 into R0
LD R1, #0b00100000 ;third bit
NOT R2, R0
AND R2, R2, R1
NOT R1, R1
AND R0, R0, R1
ADD R0, R0, R2
LDI R6, R0 ;store result in R6
STI R6, .FILL x4001; store result in x4001
HALT