51单片机16位流水灯汇编程序

51单片机16位流水灯汇编程序,第1张

org 0

jmp ww

org 30h

ww: mov a,#07fh

call ys

j1: mov p1,a

call ys

rr a

cjne a,#07fh,j1

mov p1,#0ffh

j2: mov p2,a

call ys

rr a

cjne a,#07fh,j2

mov p2,#0ffh

jmp ww

ys: mov r7,#255

y1: mov r6,#255

djnz r6,$

djnz r7,y1

ret

end希望对你有所帮助

解决这个问题,主要需要两方面的知识:

1、递归算法

虽然知道这个,但感觉头疼。Dididu1515 文刀舍予 这两位对递归是长项。

2、dos功能调用改变文件夹路径

总之,这个问题用16位汇编语言编程完全能够实现。

补充回答:看题目“遍历当前目录下以及子目录下的文件来找到所有txt属性的文件”,子目录下还可能有下级子目录,所以认为需要遍历。刚注意到,下面又说“当前目录下所有的txt文件”,不知楼主到底是要遍历当前目录下的所有子目录还是只在当前目录下找(不包含子目录)。若是后者,确如Dididu1515 所说,好办。

     mov cx,16

     xor bx,bx

@1:    rol ax,1

     jnc @2

     inc bx

@2:    loop @1

    mov cx,bx

除8相当于右移三次就实现了,程序如下:

假设除数保存在30H31H,高位在前。

DIV8:

MOV

R2,#3

LOOP:

CLR

C

MOV

A,30H

RRC

A

;高位中的D0移到C

MOV

30H,A

MOV

A,31H

RRC

A

;C移到低位中的D7

MOV

A,31H

DJNZ

R2,LOOP

;移位三次

RET

1 用DEBUG编写程序,在屏幕上显示一个字符串HELLO!,并以ACOM为文件名存盘

复制下面的文本内容,粘贴于记事本(注意:不要删除中间的空行),保存为ATXT,然后在DOS提示符下输入:DEBUG <ATXT,Ok。

e10d 'HELLO!$'

a100

lea dx,[10d]

mov ah,9

int 21

mov ax,4c00

int 21

rbx

0

rcx

14

nacom

w100

q

-----------------------------------------

2 编写完整汇编程序,将内存中10个有符号数求和。

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: Addingasm

Adding SEGMENT

ASSUME CS:Adding,DS:Adding

ORG 100H

Start: jmp Begin

Decimal DW 780,-370,266,48,-127,890,21,640,-1023,513 ; 10个有符号数

Deci_Sum DW

Begin: lea si,Decimal

cld

mov cx,9

lodsw

Adding0: add ax,[si]

inc si

inc si

loop Adding0

mov [si],ax

Exit_Proc: mov ax,4c00h ;结束程序

int 21h

Adding ENDS

END Start

-----------------------------------------

3 编写完整程序将内存中一个无符号字节数以16进制的形式显示在屏幕上

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: Hex_ASCIIasm

Hex_ASCII SEGMENT

ASSUME CS:Hex_ASCII,DS:Hex_ASCII

ORG 100H

Start: jmp Begin

DecimalNum db 76 ;无符号字节数

Change_Hex proc near

cmp al,9

ja Charactor

or al,30h

stosb

ret

Charactor: sub al,9

or al,40h

stosb

ret

Change_Hex endp

ChangeHex0 proc near

xor ah,ah

mov cl,4

shl ax,cl

shr al,cl

xchg ah,al

call Change_Hex

xchg ah,al

call Change_Hex

ret

ChangeHex0 endp

Begin: lea di,HeximalASC ;显示十六进制符号字符串地址

cld ;设置变址寄存器变址方向

mov al,DecimalNum

call ChangeHex0

mov al,'$'

stosb

lea dx,HeximalASC ;字符串首地址

mov ah,9 ; 显示结果

int 21h

Exit_Proc: mov ax,4c00h ;结束程序

int 21h

HeximalASC:

Hex_ASCII ENDS

END Start

-----------------------------------------

4 编写完整汇编程序,统计内存中10个有符号数中正数的个数

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: positiveasm

positive SEGMENT

ASSUME CS:positive,DS:positive

ORG 100H

Start: jmp Begin

Decimal DW 780,-370,266,48,-127,890,21,640,-1023,513 ; 10个有符号数

Deci_Sum DB ;正数的个数计数器

Begin: lea si,Decimal

cld

mov cx,10

mov Deci_Sum,0 ;计数器清零

positive0: lodsw

test ax,8000h

jz NextOne

inc Deci_Sum

NextOne: loop positive0

Exit_Proc: mov ax,4c00h ;结束程序

int 21h

positive ENDS

END Start

-----------------------------------------

5 编写完整汇编程序,将内存中的5个无符号数从小到大排列

; Program Name: BubblingASM

Bubbling SEGMENT

ASSUME CS:Bubbling,DS:Bubbling,ES:Bubbling

ORG 100H

Start: JMP Begin

Array DB -112,56,72,98,32 ;需要排序的数据

Elem_Num EQU ($-Array)/TYPE Array-1 ;外循环次数

Begin: MOV CX,Elem_Num

Scanning: PUSH CX ;入栈保存外循环次数

LEA SI,Array ;数组首地址装入源变址寄存器

Compare: PUSH SI

POP DI ;当前数组元素地址赋给目的变址寄存器,以备交换之用

LODSB ;将当前数组元素读入累加器

CMP AL,[SI] ;当前数组元素与相邻的下一个数组元素相比较

JBE NextOne ;若小于或等于,不作数据交换,处理下一个数组元素

XCHG AL,[SI] ;若大于,交换数组元素

STOSB ;保存数值较小者

NextOne: LOOP Compare ;处理下一个数组元素

POP CX ;外循环次数出栈

LOOP Scanning ;下一趟比较

Exit_Proc:MOV AX,4C00H ;结束程序

INT 21H

Bubbling ENDS

END Start

-----------------------------------------

6.编写完整汇编语言程序,将内存中一个组合BCD数以十进制显示在屏幕上。

; 下面的程序是16位汇编,以组合BCD码58为例,编译通过,运行正确。

; Program Name: BCD_Codeasm

BCD_Code SEGMENT

ASSUME CS:BCD_Code,DS:BCD_Code

ORG 100H

Start: mov cl,4

mov al,BCD_Str

xor ah,ah

shl ax,cl

shr al,cl

or ax,3030h

xchg ah,al

mov word ptr Dec_Str,ax

lea dx,Dec_Str ;字符串首地址

mov ah,9 ; 显示结果

int 21h

Exit_Proc:mov ax,4c00h ;结束程序

int 21h

BCD_Str db 58h

Dec_Str db ' $'

BCD_Code ENDS

END Start

以上就是关于51单片机16位流水灯汇编程序全部的内容,包括:51单片机16位流水灯汇编程序、16位汇编语言编程如何实现遍历当前目录下以及子目录下的文件来找到所有.txt属性的文件、设AX寄存器中有一16位二进制数,编制汇编语言主程序,统计AX中1的个数,统计结果送入CX中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存