购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.8 习题

1.考虑两个有符号8位数(-128~+127)的加法,其中一个操作数是正数,另一个是负数。是否存在两个符号不同的8位数,相加的结果会超过-128~+127的范围?这将构成有符号溢出。注意:在前面的讨论中,通过将右操作数按位取反使6502体系结构中的减法与加法相同,因此只讨论加法。

2.如果习题1的答案是“否”,意味着只有两个符号相同的数字相加时才会发生溢出。在发生溢出时,如果将结果的最高位分别与每个操作数的最高位执行异或操作,会发生什么?换句话说,表达式left(7)XOR result(7)和right(7)XOR result(7)的结果是什么?在表达式中,(7)表示第7位,即最高有效位。

3.回顾本章算术逻辑单元部分的VHDL,并确定用于置位或清除V标志的逻辑对于加法和减法操作是否正确。采用126+1、127+1、-127+(-1)和-128+(-1)对结果进行检查。

4.当在容易出错的传输介质上传送数据块时,通常会使用校验和(checksum)来确定在传送过程中是否有数据位丢失或损坏。校验和通常会附加到传送的数据中。其中一种校验和算法使用以下步骤:

a.将数据中的所有字节相加,结果只保留和的最低8位。

b.校验和是8位和的二进制补码。

c.将校验和添加到数据中。

在接收到带有附加校验和的数据块后,处理器可以通过把数据中的所有字节(包括校验和)简单地相加来确定校验和是否有效。如果和的最低8位为零,则校验和有效。用6502汇编语言来实现校验和算法。数据字节的起始地址存储在地址为$10~$11的内存单元中,字节数(包括校验和字节)由X寄存器指明。如果校验和有效,则将A寄存器设置为1,否则设置为0。

5.将习题4中的校验和验证代码转换为一个子程序,该子程序可以用JSR指令调用,并以RTS指令结束。

6.编写并执行一组测试,以验证习题4和习题5中实现的校验和测试子程序的正确性。代码执行校验和验证的最短数据块是什么?最长数据块是什么? SoP8yick6BLxi59/lUTgJQ6xkSptZIjyrRJYBwgE6ud8IsqWMDsYzuc8HFaOGfsR

点击中间区域
呼出菜单
上一章
目录
下一章
×