所以我目前正在为我的计算机组织类创建一个代码,我们需要对一个中间件进行编程,该中间件采用IEEE值和它的等效TNS值,并将它们转换为各自的对立面(例如TNS转换为IEEE; IEEE转换到TNS。)之后我们要比较我们对原件的答案,以检查它们是否确实相等。这是我的代码:
AREA IEEEAndTNS, CODE, READONLY;
ENTRY
ADR r1, TNS ;
ADR r2, IEEE ;
BL convertToIEEE ;
BL convertToTNS ;
CMP r2, r5 ;
BLEQ compareIEEE ;
Done B Done ;
convertToIEEE AND r9, r1, #&FF000000 ;
LSR r10, r1, #1 ;
AND r10, r10, #&FF ;
LSL r10, r10, #1 ;
SUB r10, r10, #256 ;
ADD r10, r10, #127 ;
LSR r10, r10, #23 ;
AND r11, r1, #&CF0000 ;
LSL r11, r11, #8 ;
ORR r5, r9,r11 ;
ORR r5, r5, r10 ;
BX lr ;
convertToTNS AND r9, r2, #&00 ;
AND r10, r2, #&FF000000 ;
SUB r10, r10, #127 ;
ADD r10, r10, #256 ;
LSL r10, r10, #22 ;
AND r11, r2, #&CF00 ;
LSR r11, r11, #9 ;
ORR r6, r9,r11 ;
ORR r6, r6, r10 ;
BX lr ;
compareIEEE CMP r1, r6 ;
BLEQ Done ;
IEEE DCD &4400C800 ;
TNS DCD &00C80112 ;
END
我对这个程序的整体问题是我不知道为什么它们彼此不相等,因为从我调试时看到的,我正在比较的寄存器被设置为零,当然也没有回答将等于那个。有了这个作业到今天结束,我需要巨大的帮助!