关于初学汇编语言的问题

MOV R0,#30H
MOV R5,#05H
MOV B,R5
CLR A
UP:ADD A,@R0
INC R0
DJNZ R5, UP
DIV AB
SJMP $
为什么说B没定义?怎么改?下面这句话什么意思?

UP:ADD A,@R0
INC R0
DJNZ R5, UP
DIV AB
SJMP $

楼上不要混淆了,楼主写的是51单片机的汇编语言,而你说的是8086的汇编语言,两者是不一样的。

楼主的程序,我在uVison中编译过,是没有出错的,并没有说B未定义,请楼主仔细核对,是否其他地方输入的问题。

下面这段程序做的事情应该是求位于片内RAM30H开始的5个数的平均值,具体注释如下:
UP:ADD A,@R0 ; 将A与R0指向的片内RAM单元中的内容相加
INC R0 ; R0指向下一存储单元
DJNZ R5, UP ; 控制UP循环执行5次,就是讲R0指向的30H开始的5个单元与累加器A相加,共循环5次,由于A初值为0,所以实际上这这5个单元的内容相加的
DIV AB ; A除以B,B的初值就是个数5,即求平均值,不过该平均值的商位于A中,余数位于B中
SJMP $ ; 程序停止
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-20
你在data segment里面加入
B dw ?

第二个意识是循环,然后除于AB
相似回答