当前位置:编程学习 > 汇编语言 >>

微机汇编语言编程题

题目是这样的:内存中字TABLE开始的40个字单元中存放着自然数0~39的立方值,对于FIRST单元中的任一数X(0≤X≤39),要求编程查表找出X的立方值,并存入SECOND字单元中。 求大侠指导啊!贴出完整程序,最好能有注释。。。谢谢了!
追问:ADD  AL,AL     ;乘以2
    ADD  BX,AX     ;与表格起始位置相加,得到X的立方的存放位置.
    MOV  AX,[BX]   ;取来立方值.

这三步就不懂什么意思啊,为什么要乘以二?为什么    ADD  BX,AX这一步可以得到X的立方存放位置呢?能给解释一下吗?谢谢你!我找到的答案是这样的,好像没那么麻烦,能不能解释一下啊?我完全看不懂,不理解这个方法啊。
  START: LEA  BX,TABLE
  MOV    AL,FIRST
  MOV    AH,0
  ADD     AL,AL
  ADD     BX,AX
  MOV    AX,[BX]
  MOV    SECOND
  HLT
答案:楼上用的MCS-51单片机的汇编语言编写程序。

楼主给出的80x86的汇编语言的程序。

汇编语言,有很多种,楼主出题,没有说清楚。

楼主的程序,说明如下:
=======================================
先定义立方值表:

TABLE: DW  0,1,8,27,64,125,216,343...  ;在这里顺序存放39个立方值

再执行下列程序:

START:
    LEA  BX,TABLE  ;装入表格的起始地址.
    MOV  AL,FIRST  ;取来原始数据X(0≤X≤39)
    MOV  AH,0      ;变成16位数.
    ADD  AL,AL     ;乘以2
    ADD  BX,AX     ;与表格起始位置相加,得到X的立方的存放位置.
    MOV  AX,[BX]   ;取来立方值.
    MOV  SECOND     ;送到指定位置.
    HLT

即可。
=======================================
其他:START:
     MOV  A,FIRST
     MOV  DPTR,#TABLE
     MOVC  A,@A+DPTR
     MOV  SECOND,A
     END
TABLE:
DW  0,1,8,27,64,125,216,343,512,729
DW  1000,1331,1728,2197,2744,3375,4096,4913,5832,6859
DW  8000,9261,10648,12167,13824,15625,17576,19683,21952,24389
DW  27000,29791,32768,35937,39304,42875,46656,50653,54872,59319

上一个:用汇编语言编个程序。题目如下:R1给赋初值42H,将其中内容循环右移4位后送到R0,再将R0的内容左移1位后送至
下一个:C语言属于汇编语言吗?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,