51单片机汇编语言如何通过查表的方法找出下面表中任意一位数

51单片机汇编语言如何通过查表的方法找出下面表中任意一位数,第1张

找哪一个数?假设找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 加急拜托等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9496769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存