问答题
试编写一个将寄存器AR中的小写字母(ASCII)转换成大写字母(ASCII)的子程序,并编写一个主程序,通过调用这个子程序将下面字符串中的小写字母转换成大写字母(其中,0为字符串的结束标记)。
STR:DB 'How do you do!',0
【正确答案】;数据定义
BOT EQU 0FEH ;栈底地址
ORG 10H
STR:DB 'How do you do!',0 ;字符串
;小写字母转换成大写字母子程序
ORG 28H
TOUgPER:CMP AR,#'z'+1
JNC PASS ;若AR>'z',非小写字母转PASS
CMP AR,#'a'
JC PASS ;若AR<'a',非小写字母转PASS
ADC AR,#-20H ;AR←AR-20H
PASS:PET
;主程序
ORG 40H
START:LD SP,#BOT ;SP指向栈底
LD IX,#0
LOOP:LD AR,STR[IX] ;取一字符
CMP AR,#0
JZ OVER ;若字符=0,则转OVER结束
CALL TOUPPER ;转换成大写字母
ST AR,STR[IX] ;将转换结果存回原处
INC IX ;调整下标偏移
JMP LOOP ;继续处理
OVER:JMP S ;停止往下执行
END START
【答案解析】