用汇编语言编写的动态扫描程序显示不对(程序在下面)。本来应该显示的是1234,可实际上显示的是8888。

用汇编语言编写的动态扫描程序显示不对(程序在下面)。本来应该显示的是1234,可实际上显示的是8888。,第1张

    ORG 0000H           再试试

      MOV   SP,#60H     栈起点设置为60H

      MOV   7AH,#01H

      MOV   7BH,#02H

      MOV   7CH,#03H

      MOV   7DH,#04H      复位状态字型枣袭卜码送缓凳穗冲区

LooP: ACALL  DIS       

      LCALL  DAY

      SJMP 禅升LooP

    ------------显示子程序----------------

      4共阴极LED,P0控制段,P2控制位

DIS:  MOV DPTR,#TAB

DIS1: MOV R0,#7AH

      MOV R1,#0feH    反向驱动位选择初值

      MOV R2,#04H

DIS2: MOV A,@R0

      MOVC A,@A+DPTR

      ORL P2,#0FH              消隐

      MOV P0,A

      MOV A,R1

      MOV P2,A

      LCALL  DAY      1ms   

      INC  R0

      RL  A

      MOV R1,A

      DJNZ R2,DIS2

      RET

TAB:  DB  03FH,06H,05BH,4FH,66H,6DH,7DH,07H   

      DB  7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40H

 ------------1ms延时子程序----------------

DAY:  MOV R6,#1

D1:   MOV R7,#248

D2:   NOP

      NOP

      DJNZ R7, D2

      DJNZ R6, D1

      RET

      END

这个简单,我来好了:

ORG 0000H

AJMP MAIN

ORG 0010H

MAIN:MOV P0,#0FFH 给按键接口赋高游毁闷电平

MOV A,P0 假设P1.0是开,P1.1是关开关

SUBB A,#FE

ACALL DELAY去抖

JZ RUN

SUBB A,#FD

ACALL DELAY去抖神弯10MS

JZ STOP

SJMP MAIN

RUN: MOV P2,#0FEH假设P2.0是控制口,低电平开

SJMP MAIN

STOP: MOV P2,#0FEH假设P2.0是控制口,高余孙电平关

SJMP MAIN

DELAY: MOV R7,#08H

DELAY1:MOV R6,#0FFH

DELAY2:DJNZ R6,DELAY2

DJNZ R7,DELAY1

RET

END

用十进制形式显示字符位置的代码如下:

DSEG SEGMENT

msgi db "please input a string:$"显示信息,提示输入一串字符

buf db 50,0

table db 50 dup (?)输迅轮入字符串缓冲区

msgd db 0dh,0ah,"the location is:$"显示信息,提示0所在位置

DSEG ENDS

CSEG SEGMENT

assume cs:CSEG, ds:DSEG,es:DSEG

MAIN PROC FAR 主程序入口

mov ax, dseg

mov ds, ax

mov es,ax

lea dx,msgi显示信息,提示输入一串字符

mov ah,9

int 21h

lea dx,buf输入字符串

mov ah,0ah

int 21h

lea si,buf

mov cl,[si+1]输入字符实际个数存入CX中

mov ch,0

lea di,table输入字符起始地址存入DI

mov al,30h要查亩清信找的字符0送AL

cld置方向标志为地址增量

repnz scasb

jnz tj

lea dx,msgd显示信息,提示0所在位置

mov ah,9

int 21h

sub di,offset table

mov bx,di

call disp用十进制形式显示位置

tj:

mov ah,1按任意键退出

int 21h

mov ax, 4c00h 程序结束,返回到 *** 正悄作系统系统

int 21h

MAIN ENDP

disp proc near

mov cx,10000d

call dec_div

mov cx,1000d

call dec_div

mov cx,100d

call dec_div

mov cx,10d

call dec_div

mov cx,1d

call dec_div

ret

dec_div proc near

mov ax,bx

mov dx,0

div cx

mov bx,dx

mov dl,al

add dl,30h

mov ah,2

int 21h

ret

dec_div endp

disp endp

CSEG ENDS

END MAIN


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

原文地址:https://54852.com/yw/12480676.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存