找哪一个数?假设找38H
MOV DPTR , #TABLE
LOOP:
MOV A,#0
MOVC A,@A+DPTR ;查表
CJNE A,#38H,LOOP ;不是需要的,返回,继续
SJMP $ ;是它,踏步
这样也行吧:
ORG 0000H
LJMP STA
ORG 0030H
STA:
MOV DPTR, #TAB
LOOP:
MOV A, R2
ANL A, #15
MOVC A, @A + DPTR
CPL A ;这行根据你的电路可加可不加,看是低有效还是高有效。
MOV P0, A
INC R2
DJNZ R4, $
DJNZ R4, $
DJNZ R3, $ - 4
SJMP LOOP
TAB:
DB 1, 2, 4, 8, 16, 32, 64, 128
DB 128, 64, 32, 16, 8, 4, 2, 1
END
data segment
t db '0123456789'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
lea bx, t
mov al, 4
xlat
mov ah,0eh
int 10h
mov ah,4ch
int 21h
code ends
end start
MOVC A,@A+DPTR是查表指令,执行顺序是:
A+DPTR→DPTR
(DPTR)→A
ANL A,#0FH这里是为了保险将累加器高四位清零,表的长度为16个字节,如果高四位有数,那么就查出表格之外了,会得到无效数据。
以上就是关于51单片机汇编语言如何通过查表的方法找出下面表中任意一位数全部的内容,包括:51单片机汇编语言如何通过查表的方法找出下面表中任意一位数、用汇编语言通过查表来编写流水灯的程序、汇编语言利用查表指令取 *** 作数 查表指令为XLAT 执行的 *** 作是AL←BX+AL 加急拜托等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)