微机汇编语言编程题
题目是这样的:内存中字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语言属于汇编语言吗?