问题—— 编写一个汇编语言程序,计算寄存器B内容中的个数,并将结果存储在存储器位置3050。
null
例如——
算法-
- 将累加器中的十进制数转换为等价的二进制数
- 将二进制数的数字向右旋转,不带进位
- 应用循环直到计数不为零,以更改D寄存器和计数的值
- 将D寄存器的值复制到累加器并存储结果
项目-
内存地址 | 助记符 | 评论 |
---|---|---|
2000 | MVI B 75 | B← 75 |
2002 | MVI C 08 | C← 75 |
2004 | MVI D 00 | D← 00 |
2006 | 电影A,B | A.← B |
2007 | RRC | 无需携带即可右转 |
2008 | JNC 200C | 不带就跳 |
200B | 印度卢比 | D← D+1 |
200C | DCR C | C← C-1 |
200D | JNZ 2007 | 如果不是零跳 |
2010 | 莫夫A,D | A.← D |
2011 | STA 3050 | A.→ 3050 |
2014 | HLT | 停止执行 |
解释——
- MVI B 75 将75位十进制数移到B寄存器中
- MVI C 08 将08位十进制数移到C寄存器中,该寄存器作为计数器,因为数字为8位
- MVI D 00 将00号移到d寄存器中
- 电影A,B 将B寄存器的内容移到A(累加器)寄存器中
- RRC 向右旋转A的内容(它是75,二进制等价物为0111011)
- JNC 200C 如果进位标志不为零,跳转到200C地址并执行写在那里的指令
- 印度卢比 通过向D寄存器的内容中添加一个来增加D寄存器的值
- DCR C 通过从C寄存器的内容中减去一来减少C寄存器的值
- JNZ 2007 跳转到2007地址,如果零标志不是零,则执行其中写入的指令
- 莫夫A,D 将B寄存器的内容移到寄存器中
- STA 3050 将文件的内容存储在3050内存位置
- HLT 停止执行
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END