相关文章推荐

题目描述: 编写汇编语言程序,假设十进制数与十六进制数均不超过两位,将从键盘读入的十进制数(#开头)或十六进制数(x开头)转换为二进制数表达形式,并打印。例如,输入x2A,打印00101010;输入#12,打印00001100

1、输入第一个符号,判断是#还是x,利用BR语句跳转至不同情况

2、求出实际数值,即将ascii码转换为数字后,第一位数乘以相应进制数+第二位数,十六进制数需额外判断字母

3、利用除二取余法,循环求出每位二进制数,并存储

4、打印每位二进制数,输出时需再还原为ascii码

可执行代码

;将输入的十进制和十六进制数转换成二进制数并输出
;十进制数由#开头,十六进制数由x(小写)开头,假设输入均为两位
		.ORIG	X3000
		LD	R1,N35
		ADD	R1,R0,R1	;判断是否为#
		BRZ	GETDEC		;进入十进制		
		LD	R2,N85
		ADD	R1,R1,R2	;判断是否为x
		BRZ	GETHEX		;进入十六进制
		BRNZP	END		;均不符合则直接结束
;十进制转二进制
GETDEC		AND	R1,R1,#0	;R1存储十进制形式第一位数
		AND	R2,R2,#0
		ADD	R2,R2,#10	;R2存储循环次数
		IN			;输入第一位数
		LD	R3,N48
		ADD	R0,R0,R3	;将ascii码转换成数字
MULTTEN		ADD	R1,R1,R0	;将第一位数字乘10
		ADD	R2,R2,#-1
		BRZ	MTEND
		BRNZP	MULTTEN		
MTEND		AND	R0,R0,#0
		IN			;输入第二位数
		ADD	R0,R0,R3
		ADD	R1,R1,R0	;得到十进制数
		STI	R1,NUM		;存储实际数值
;进行逐位除法取余
		LD	R5,BINARYNUM	;R5载入存储地址
		ADD	R5,R5,#7	;除二取余结果从后往前,故先指向最后一位
		AND	R6,R6,#0
		ADD	R6,R6,#8	;R6记录循环次数
LOOP1		AND	R2,R2,#0
		ADD	R2,R2,#-2	;2为除数
		AND	R3,R3,#0	;R3存储商
		AND	R4,R4,#0	;R4存储余数
LOOP2		ADD	R1,R1,R2	;R1=R1-R2
		BRN	STORE1		;如果结果小于0,说明除尽
		ADD	R3,R3,#1	;如果未除尽,商+1
		BRNZP	LOOP2		;继续循环
STORE1		ADD	R4,R4,R1	;令R4=R1
		AND	R2,R2,#0
		ADD	R2,R2,#2	;2为除数
		ADD	R4,R4,R2	;将多减一次的结果加回除数,得到余数
		STR	R4,R5,#0	;存储余数
		AND	R1,R1,#0
		ADD	R1,R1,R3	;令被除数变为此次商
		ADD	R5,R5,#-1
		ADD	R6,R6,#-1
		BRZ	OUTPUT		;循环结束则进入输出
		BRNZP	LOOP1
;十六进制转二进制
GETHEX		AND	R1,R1,#0	;R1存储十进制形式第一位数
		AND	R2,R2,#0
		LD	R7,P16
		ADD	R2,R2,R7	;R2存储循环次数
		LD	R3,N48		;R3存储-48
		ADD	R0,R0,R3	;将ascii码转换成数字
		ADD	R0,R0,#-9	;判断第一位数是否是字母
		BRP	TONUM1		;如果是字母,将其转换为数字
		ADD	R0,R0,#9	;如果不是字母,还原第一位数
		BRNZP	MULT16
TONUM1		ADD	R0,R0,#2	;将字母转换成数字
MULT16		ADD	R1,R1,R0	;将第一位数字乘16
		ADD	R2,R2,#-1
		BRZ	M16END
		BRNZP	MULT16		
M16END		AND	R0,R0,#0
		IN			;输入第二位数
		ADD	R0,R0,R3	;将ascii码转换成数字
		ADD	R0,R0,#-9	;判断第二位数是否是字母
		BRP	TONUM2		;如果是字母,将其转换为数字
		ADD	R0,R0,#9	;如果不是字母,还原第二位数
		BRNZP	TOBIN
TONUM2		ADD	R0,R0,#2
		ADD	R1,R1,R0	;得到十六进制数
		STI	R1,NUM		;存储实际数值
;进行逐位除法取余
TOBIN		LD	R5,BINARYNUM	;R5载入二进制数存储地址
		ADD	R5,R5,#7	;除二取余结果从后往前,故先指向最后一位
		AND	R6,R6,#0
		ADD	R6,R6,#8	;R6记录循环次数,总共8次
LOOP3		AND	R2,R2,#0
		ADD	R2,R2,#-2	;2为除数
		AND	R3,R3,#0	;R3存储商
		AND	R4,R4,#0	;R4存储余数
LOOP4		ADD	R1,R1,R2	;R1=R1-R2
		BRN	STORE2		;如果结果小于0,说明除尽
		ADD	R3,R3,#1	;如果未除尽,商+1
		BRNZP	LOOP2		;继续循环
STORE2		ADD	R4,R4,R1	;令R4=R1
		AND	R2,R2,#0
		ADD	R2,R2,#2	;2为除数
		ADD	R4,R4,R2	;将多减一次的结果加回除数,得到余数
		STR	R4,R5,#0	;存储余数
		AND	R1,R1,#0
		ADD	R1,R1,R3	;令被除数变为此次商
		ADD	R5,R5,#-1	;按照除二取余顺序,地址指针-1
		ADD	R6,R6,#-1	;循环次数-1
		BRZ	OUTPUT
		BRNZP	LOOP3
OUTPUT		AND	R1,R1,#0
		ADD	R1,R1,#8	;输出循环次数
		AND	R2,R2,#0
		LD	R2,BINARYNUM	;载入存储二进制数的起始地址
		AND	R3,R3,#0
		LD	R3,P48
OUTPUTLOOP	LDR	R0,R2,#0
		ADD	R0,R0,R3	;将数字转换成ascii码
		ADD	R2,R2,#1
		ADD	R1,R1,#-1
		BRZ	END
		BRNZP	OUTPUTLOOP			
END		HALT
N35		.FILL	X-23		;#的ascii码为35
N85		.FILL	X-55		;x的ascii码为120,判断时减去35后再减去85
N48		.FILL	X-30	
N16		.FILL	X-10
P48		.FILL	X30
P16		.FILL	X10
NUM		.FILL	X4000		;存储实际数值,便于调试
BINARYNUM	.FILL	X4100		;存储二进制数的地址
                    题目描述:编写汇编语言程序,假设十进制数与十六进制数均不超过两位,将从键盘读入的十进制数(#开头)或十六进制数(x开头)转换为二进制数表达形式,并打印。例如,输入x2A,打印00101010;输入#12,打印00001100流程:1、输入第一个符号,判断是#还是x,利用BR语句跳转至不同情况2、求出实际数值,即将ascii码转换为数字后,第一位数乘以相应进制数+第二位数,十六进制数需额外判断字母3、利用除二取余法,循环求出每位二进制数,并存储4、打印每位二进制数,输出时需再还原为asci
该存储库已弃用,所有新开发都将在此处完成
 用C ++编写的可扩展LC-3模拟器。 包括图形用户界面和命令行界面模拟器,汇编器, 和Python自动分级器(示例)[  ]。 主要在Georgia Tech的CS2110中使用。 由Brandon(bwhitehead0308 [AT] gmail [DOT] com)维护。
 特别说明让我知道您的学校是否正在使用此处提供的工具的任何部分。 这些工具每学期都会随着新功能的增加或根据学生的反馈进行调整而有所变化。 我不想破坏任何人的设置,并希望通过更改和建议功能使用户保持循环。
complx是一套用于学习lc3汇编的教育工具。 它包括基于gui和cli的模拟器(分别命名为complx和comp),汇编器(as2obj),通过pyLC3进行的python绑定以及以python编写的autograder框架。 Complx还可以通过为L
				
不同进制间转换一直是汇编语言必须要掌握的编程技巧,算法也比较简单: 例如:当其他进制转为十进制时使用的除十取余法,压入栈中,弹出后实现逆序输出; 当其他进制转为二进制时使用的除二取余法,压入栈中,弹出后实现逆序输出; 进而扩展:当其他进制转为R进制时使用的除R取余法,压入栈中,弹出后实现逆序输出; 下面介绍一种比较简便的方法,通过移位指令实现的十进制二进制形式的进制转换程序,
如:十进制0.5转换二进制 首先要明白,十进制二进制仍然为小,所以二进制左边 为0.xx 0.5 × 2 = 1.0 取整部分“1” 此时小...
LC-3 中,`sext(pcoffset9)`是一个符号扩展操作,用于将 9 位偏移量符号扩展为 16 位。该操作用于计算相对于当前指令地址的偏移量,并将其添加到当前指令地址以计算分支目标地址。 具体来说,偏移量取自当前指令的后 9 位,表示一个有符号的二进制。如果偏移量的最高位为 1,则表示这是一个负。符号扩展操作会将这个负的符号位扩展为 16 位,即将最高位的 1 填充到高位,以得到一个 16 位的有符号。这个有符号再与当前指令地址相加,得到分支目标地址。
CSDN-Ada助手: 感谢您分享了关于图的最短路径的经验,这篇博客写得十分易懂。如果您对图的算法感兴趣,可以考虑写一篇关于最大流问题的博客,介绍基础的最大流算法和它们的应用。期待看到您的新作品! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 树结构转换(先序转双亲) CSDN-Ada助手: 不知道 算法 技能树是否可以帮到你:https://edu.csdn.net/skill/algorithm?utm_source=AI_act_algorithm
 
推荐文章