[关闭]
@Lin-- 2017-11-16T09:35:37.000000Z 字数 842 阅读 330

第六章作业

编程题一

用机器语言写满足这样功能的程序:键盘输入两个数,进行相加,然后输出结果。


  1. 0000 C0 00 00 ;把A寄存器清零
  2. 0003 31 00 18 ;用键盘输入第一个数,存储该数到地址0018
  3. 0006 71 00 18 ;将地址0018中的操作数(即用键盘输入的第一个数)加入到寄存器A
  4. 0009 31 00 20 ;用键盘输入第二个数,存储该数到地址0020
  5. 000C 71 00 20 ;将地址0019中的操作数(即用键盘输入的第二个数)加入到寄存器A
  6. 000E E1 00 22 ;存储A寄存器的数据(即两数之和)到地址0022
  7. 0013 39 00 22 ;在显示屏上显示地址0022中对应的数据(及两数之和)
  8. 0016 zz ;停止操作

编程题二

用汇编语言写满足这样功能的程序:键盘输入一个整数n,求1+2+...+ n的结果,并输出。

  1. BR main
  2. sum: .WORD 0X0000 ;设置sum0
  3. num: .BLOCK 2 ;为num设置存储空间
  4. counter: .WORD 0x0000 ;设置counter0
  5. main: DECI num,d ;从键盘上输入数字num
  6. loop: LDA sum,d ;将sum的值调入寄存器A
  7. ADDA counter,d ;将counter的值加入寄存器A
  8. STA sum,d ;存储数据sum
  9. LDA counter,d ;将counter的值调入寄存器A
  10. ADDA 1,i ;将1加入到寄存器A
  11. STA counter,d ;存储counter的值
  12. CPA num,d ;比较counternum的值
  13. BREQ L1 ;若两值相同,执行L1操作
  14. BR loop ;若两值不同,继续循还
  15. 执行上述循环后,sum的值是1+2+...+n-1,而此时counter的值
  16. n相同,故需将counter加入sum中,使得sum=1+2+...+n
  17. L1: LDA sum,d ;将sum的值调入寄存器A
  18. ADDA counter,d ;将counter的值加入寄存器A
  19. STA sum,d ;存储数据sum
  20. quit: DECO sum,d ;在显示屏上显示sum的值
  21. STOP ;停止
  22. .END ;结束
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注