UBC指令完成除法运算
a
d0ffffhB;将B寄存器的高16位清为0。这时余数被丢
弃,仅保留商
bcddiv_e
dagt;延时跳转,先执行下面两条指令,然后判断A,
f若A0,则,跳转到标号div_e
d,结束除法运算
stlB1,quot_f;将商右移一位后存入变量quot_f,右移是为了
修正符号位
xorB
;若两数相乘的结果为负,则商也应为负。先将B
寄存器清0
subquot_fB;将商反号
stlBquot_f;存回变量quot_f中
div_e
d:
三、实验内容
1编写实验程序代码
本实验的汇编源程序代码主要分为六个部分:加法、减法、整数
乘法、小数乘法、整数除法和小数除法。每个部分后面都有一条需要
加断点的标志语句:
op,当执行到这条加了断点的语句时,程序将
自动暂停。这时你可以通过“存贮器窗口”检查计算结果。当然你看到
的结果都是十六进制的数。实验源程序请参见附录。
2用ccssimulator调试运行并观察结果
在完成实验程序代码的输入,并使用ccs进行编译并连接,得到
out文件后,就可以在simulator上调试运行。步骤如下:
a启动ccssimulator。
b点击fileloadprogram,找到exer1out并装入。这时可在反汇
编窗口看到程序代码。
c打开“Memory”窗口,并在其中选择要查看的存贮器地址段:0x080
f-0x08e。d在反汇编窗口中在每个“
op”指令处都设一个断点,方法有两种:1用鼠标双击该指令将其点亮即可。2在菜单栏中选择debugbreakpoi
t,然后在弹出的对话框中键入欲加断点的地址即可(注意地址的格式)。e单击Ru
快捷键(或者F5按钮),启动执行基本算术运算程序,程序在执行完加法运算后自动暂停。通过registerwi
dow窗口可以看到寄存器A的内容为0x46,这正是加法运算的结果。同样,在Memory窗口中,可以看到0x810x820x88的内容为分别为001200340x46。执行加法运算后,将0x81和0x82的内容相加,结果放在0x88单元。f在Memory窗口中用鼠标左键双击0x81单元,这时可以修改该内存单元的内容。输入新的数据0x0ffee(十进制的18),编辑内容时请直接输入FFEE(十六进制),然后回车确认,便完成对0x81单元的修改。g在registerwi
dow窗口中修改PC值,方法也是鼠标左键双击PC寄存器的内容,输入新的PC值0x1085(编辑内容时直接输入1805),并用回车键确认。h单击Ru
快捷键(或者F5按钮),程序从当前PC继续运行,重新计算0x81和0x82的和,结果在0x88中。当程序再次暂停时,可以看到A寄存器和0x88的内容为0x22(十进制的34),这正是我们希望的结果:185234。
fi单击“Ru
F5r