汇编编程 求Y=X*X

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:55:36
程序如下:
——————————————————————
SQUARE MACRO
XX SET 0
REPT 128
DW XX*XX
XX SET XX+1
ENDM
ENDM
DSEG AT 20H
X: DS 1
Y: DS 2
CSEG AT 0
AJMP MAIN
CSEG AT 30H
MAIN:
MOV DPTR,#TAB
MOV A,X
RL A
MOV B,A
MOVC A,@A+DPTR
MOV Y,A
MOV A,B
INC A
MOVC A,@A+DPTR
MOV Y+1,A
SJMP $
TAB:
SQUARE
END
————————————————————
哪位高手给解释下,看不懂啊。3Q
MAIN 部分第3行: RL A
A为什么要循环左移移位呢?

通过宏定义,把0~128的平方值,存放在程序后方的空间,
然后从20H单元取出一字节变量,
再根据变量的大小,从表格中某个位置,取出对应的平方值,
存放到Y。
-----------------------
A为什么要循环左移移位呢?
是因为一字节的原始值,对应着两字节的结果,结果数据表,较长。