嵌入式汇编的超级简单的小程序。 1个100分哦 加油回答。

嵌入式汇编的超级简单的小程序。 1个100分哦 加油回答。,第1张

初值是R3=4么

如果是的话R2,R3的值执行后都是4

AREA test,CODE,READONLY

ENTRY

Loop

MOV R2,#5;

MOV R3,#4;

MOV R4,#3

SUBS R2,R3,R4,LSR #2

Stop

B Stop

END

写一段给你吧~ 以 7ch中断为例 间隔显示时间自己可以修改~ 在 dally里

assume cs:code

stack segment

db 128 dup(0)

stack ends

code segment

start: push cs

pop ds

mov si,offset s8

mov ax,0

mov es,ax

mov di,200h ;ds:si 指向源地址 es:si指向目的地址

mov cx, offset s9-offset s8

cld

rep movsb

cli

mov word ptr es:[7ch4],200h

mov word ptr es:[7ch4+2],0 ;设置中断向量表

sti

int 7ch ;------->调用安装好的中断例程~ 测试~

mov ax,4c00h

int 21h

s8: push ax

push es

push di

push cx

mov ax,0b800h

mov es,ax

mov di,12160+402

mov cx,9

mov al,31h

s: mov byte ptr es:[di],al

mov byte ptr es:[di+1],2

call dally

inc al

cmp al,99h

ja s1

cmp cx,1

je s1

loop s

s1:mov cx,9

mov al,31h

jmp short s

dally: push ax

push bx

mov ax,0 ;延迟输出时间在此设置

mov bx,5000h

s2: sub ax,1

sbb bx,0

cmp ax,0

jne s2

cmp bx,0

jne s2

pop bx

pop ax

ret

s9: pop cx

pop di

pop es

pop ax

iret

code ends

end start

我给你三个数字输入,从小到大输出:

编译:

INKEY宏NN

MOV啊,1H

中断21h

子人,30H

MOV BL,NN

MUL BL

新增总和,斧头

ENDM

数据

总和DW 0 /> str1的DW 0

str2的DW 0

STR3 DW 0

BUFF1 DB 0

BU2 DB“1 2 3 4 5 6 7 8 9 A”,0DH,0AH“ “

数据结束

堆栈段段堆栈

DB 100 DUP(?)

堆栈结束

代码段

假设CS,DS代码: ES:数据,数据,SS:堆栈

SUB1 PROC远远开始推DS

MOV AX,0

的PUSH AX

MOV AX,数据

MOV DS,斧头

MOV ES,斧头

INKEY 100,输入的第一个号码

INKEY 10

INKEY

MOV AX,总和

> MOV str1的斧头

MOV总和,0

MOV DL,“

MOV啊,2H

中断21h

INKEY 100进入第一两个数字

INKEY 10

INKEY 1,总和

MOV str2的AX

MOV总和,0

MOV DL“,”乐章啊,2H

中断21h

INKEY 100;输入数量

INKEY 10

INKEY 1

MOV AX,总和

> MOV STR3,斧头

MOV DL,0DH

乐章啊,2H

21H

MOV DL,0AH

乐章啊,2H

> INT 21H

MOV AX,str1的三个数字大小

CMP斧头,STR2

JAE A7。的

JMP A8

A7:MOV BX,STR2

MOV STR2,斧头

MOV str1中,BX

A8:MOV AX,STR2

CMP斧头,STR3

宰A9

JMP A11

A9:MOV BX,STR3

MOV STR3,斧头

MOV STR2,BX

MOV AX,str1的

CMP斧头,STR2

宰A10

JMP A11

A10:MOV BX,BX,STR2

MOV STR2,斧头

MOV str1的

A11:MOV AX,STR1

MOV AL,啊

调用SUB3

MOV AX,STR1

调用SUB3

MOV DL,“H” />乐章啊,2H

中断21h

MOV DL,“

MOV啊,2H

INT 21H

XOR啊,啊

MOV AX,STR2

MOV AL,啊

呼叫SUB3

MOV AX,STR2

调用SUB3

MOV DL,“H”

>乐章啊,2H

21H

MOV DL,“”

MOV啊,2H

21H

异啊,啊

MOV AX,STR3

MOV AL,啊

调用SUB3

MOV AX,STR3

通话SUB3

MOV DL,“H”

MOV啊,2H 21H

RET

SUB1 ENDP

SUB2 PROC

CMP AL,9

JA G1

添加人,“0”;

JMP G2

G1:加AL,37H

G2:MOV DL,人

乐章啊,2

21H

RET

SUB2 ENDP

SUB3 PROC

MOV BUFF1人

SHR人,1

SHR人,1

SHR人,1 BR /> SHR人,1

CALL SUB2

MOV AL,BUFF1

人,0FH

CALL SUB2

RET SUB3 ENDP 代码结束

年底开始

(C语言):

#包括中

无效的main()

{

吨;

INT A,B,C;

的printf(“请输入三个整数:\ N”);

scanf函数(“%D%D%D” ,&B,&C);

倘(a> B)

{

T = A;

= B;

B =吨; BR />} / / A,B交换

(> C)

{

T = A;

= C;

C =吨; BR />} / / A,C交换

(B> C)

{

T = B;

B = C;

C =吨; BR />} / / B,C交换

的printf(“从小到大输出数:%d,%D,%D \ N”,A,B,C);

}

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

明天晚上要上机实验微机原理,如果我做不出来那程序,那就完蛋了。虽然说是超级简单,但是对于我一个新学者,并且是电脑文盲来说,艰巨性还是可以想象的。

题目要求是:(1)单子节无符号数排序:DATANUM单元开始存放双字节无符号数,表示要排序数据的个数;DATAS单元开始存放要排序的数据,数据格式至少10个,程序运行之后,这些数据按照由小到大的顺序仍然存放于DATAS单元开始的位置‘

(2)去极值滤波:某控制系统为了抗干扰,采用去极值滤波法处理采集数据,采集数据所用A/D转换器精度为12位,取连续6个A/D采样值(双字节,低12位),要求去掉最大值和最小值,将余下的4个数求平均值,用该平均值代表当前时刻系统状态的真值。试编一程序完成这一滤波过程。

以上算法我也懂,但是刚学微机,指令什么的都不知道该如何用。各位好手,麻烦帮帮忙,帮我编写以上两个小程序,最好的给出注释。先给200,满意的追100

解析:

你等我

DATANUM=10 ;设有10个数据

STACK SEGMENMT STACK ‘STACK’

DW 100H DUP()

TOP LABEL WORD

STACK ENDS

DATA SEGMENT

DATABUF DW DATANUM

DB DATANUM DUP(?)

DATA EDATANUMDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

START:

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,STACK

MOV SS,AX

LEA SP,TOP

; 取出随机数据

MOV CX,DATABUF

LEA SI,DATABUF+2

MOV BL,23

MOV AL,11

LP:

MOV [SI],AL

INC SI

ADD AL,BL

LOOP LP

; 数据排序

MOV CX,DATABUF

DEC CX

LEA SI,DATABUF+2

ADD SI,CX

LP1:

PUSH CX

PUSH SI

LP2:

MOV AL,[SI]

CMP AL,[SI-1]

JAE NOXCHG

XCHG AL,[SI-1]

MOV [SI],AL

NOXCHG:

DEC SI

LOOP LP2

POP SI

POP CX

LOOP LP1

;数据排序结束

MOV AH,4CH ;返回DOS

MOV AL,0

IDATANUMT 21H

CODE ENDS

END START

我这个连中断都用上了

第二题

PUSH PSW ;保护现场

PUSH A

CLR C ;进位标志位清零

MOV DATA,DATA2

MOV A,DATA1

SUBB A,DATA ;求Yn-1 -Yn

JNC COMPARE ;如果Yn-1 -Yn≥0,转COMPARE

CPL A ;如果Yn-1 -Yn<0, 求补

INC A

COMPARE: CLR C

SUBB A,LIMIT ;│Yn-Yn-1│和△y比较

JC OVER ;如果│Yn-Yn-1│≤△y,DATA2→DATA

MOV DATA,DATA1 ;如果│Yn-Yn-1│>△y,DATA1→DATA

OVER: POP A ;恢复现场

POP PSW

RET ;返回

这个作为参考,是MCS的

;入口 :A,SDAT,DELTY

;占用资源:B

;堆栈需求:2字节

;出口 :A

JUGFILT :MOV B,A

CLR C

SUBB A,SDAT

JNC JUGFT1

CPL A

INC A

JUGFT1 :SETB A

SUBB A,#DELTY

JNC JUGFT3

MOV A,SDAT

RET

JUGFT3 :MOV A,B

MOV SDAT,A

RET

;中位值滤波程序

;入口 :ADDPH,ADDPL,N

;占用资源:ESELSORT

;堆栈需求:4字节

;出口 :A

MEDFILT :LCALL ESELSORT

MOV A,N

CLR C

RRC A

ADD A,ADDPL

MOV DPL,A

MOV A,ADDPH

MOV DPH,A

JNC MEDFT1

INC DPH

MEDFT1 :MOVX A,@DPTR

RET

;N点算术平均滤波

;入口 :ADDPH,ADDPL,N

;占用资源:B,R3,R4

;堆栈需求:2字节

;出口 :A

AVFILT :MOV A,ADDPL

MOV DPL,A

MOV A,ADDPH

MOV DPH,A

CLR A

MOV R3,A

MOV R4,A

MOV R7,N

AVFT1 :MOVX A,@DPTR

INC DPTR

ADD A,R4

MOV R4,A

JNC AVFT2

INC R3

AVFT2 :DJNZ R7,AVFT1

MOV R7,N

MOV R2,#00H

LCALL NDIV31

MOV A,R4

RET

;N点加权平均滤波

;入口 :ADDPH,ADDPL,N

;占用资源:B,R3,R4

;堆栈需求:2字节

;出口 :A

QAVFILT :CLR A

MOV R3,A

MOV R4,A

MOV R7,N

MOV P2,ADDPH

MOV R1,ADDPL

MOV DPTR,#QAVTAB

QAVFT1 :MOVC A,@A+DPTR

MOV B,A

MOVX A,@R1

INC DPTR

INC R1

MUL AB

ADD A,R4

MOV R4,A

MOV A,B

ADDC A,R3

MOV R3,A

DJNZ R7,QAVFT1

MOV A,R4

JNB ACC7,QAVFT2

INC R3

QAVFT2 :MOV A,R3

RET

QAVTAB :DB

;一阶加权滞后滤波程序

;入口 :A,DELTY

;占用资源:B,R3,R4

;堆栈需求:2字节

;出口 :A

BQFILT :MOV B,A

CLR A

MOV DPTR,#ABTAB

MOVC A,A+DPTR

MUL AB

MOV R4,A

MOV R3,B

MOV A,01H

MOVC A,A+DPTR

MOV B,DELTY

MUL AB

ADD A,R4

MOV R4,A

MOV A,B

ADDC A,R3

MOV R3,A

MOV A,R4

JNB ACC7,FT1

INC R3

FT1 :MOV A,R3

MOV DELTY,A

RET

BQTAB :DB 80H,80H

以上就是关于嵌入式汇编的超级简单的小程序。 1个100分哦 加油回答。全部的内容,包括:嵌入式汇编的超级简单的小程序。 1个100分哦 加油回答。、用汇编编一段小程序、求高手编写一个汇编语言的小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存