运用汇编语言,编写程序,将10个字符中查找字母'A',有则在外部RAM60H单元中存储Y,否则为N

作者&投稿:文卖 (若有异议请与网页底部的电邮联系)
单片机字母查找K编程序,10个字符中查找字母"G",有则在内部RAM60H单元中存储Y,否则为N.~

51 单片机:

MOV R0, #30H ;假设一个起始地址
MOV R2, #10
LOOP:
CJNE @R0, #'G', NEXT
MOV 60H, #'Y'
JMP EXIT
NEXT:
INC R0
DJNZ R2, LOOP
MOV 60H, #'N'
EXIT:
SJMP $

END

挺简单的,只要你熟悉汇编指令就行了
ORG 0000H
MAIN:
MOV R0,#30H ;置数据块首地址
MOV R6,#20 ;数据长度
LOOP:
MOV A,#0AAH
SUBB A,@R0 ;A=A-((R0))
INC R0 ;读下一个数
CJNE A,#00H,LOOP1 ;判断A 是否等于零,不等,转LOOP1
MOV 51H,A ;等于零,即此数为#0AAH,存入51H中
LOOP1:
DJNZ R6,LOOP ;判断循环是否结束
END

你的程序基本的思路上是正确的,有个致命错误地方是,题目要求在外部RAM60H处存储Y或者N,
你的程序是在内部RAM60H处存储的,再还有点小的瑕疵,我给你修改一下,先看你的原来的程序:

ORG 0000H
MOV R0,#40H 将首字符地址设置成40H单元
MOV R1,#0AH 将查找次数存入R1中
MOV R2,#41H 将关键字41H存入R2中
NEXT:MOV A,R2 将R2中的关键字送入累加器A只能中
SUBB A,@R0 比较A是否与@R0的内容相等
JZ ENDP 若相等则自动是比较ENDP
DJNZ R1,NEXT 判断R1-1是否为零,不为零时跳转到NEXT
AJMP HERE 针跳转到HERE
ENDP:MOV A,#59H 将Y的ASCⅡ59H赋值给A
MOV 60H,A 将59H存入60H单元只能中//--------你这是内部的RAM
AJMP LOOP 跳转到LOOP
HERE:MOV A,#4EH 将N的ASCⅡ码4EH赋值给A
MOV 60H,A 将4EH存入60H单元中
AJMP LOOP 跳转到LOOP ///----------------这句没有必要
LOOP:AJMP LOOP
END 结束

我修改后的程序:

ORG 0000H
MOV R0 ,#40H
MOV R1,#0AH
MOV R2,#'A' //-----你这个地方如果用'A'来表达,会更加易读
NEXT:
MOV A,R2
SUBB A,@R0
JZ ENDPR
DJNZ R1,NEXT
AJMP HERE

ENDPR:
MOV R0,#60H //----寻址外部RAM,可以用R0,R1,DPTR
MOV A,#'Y' //-----你这个地方如果用'Y'来表达,会更加易读
MOVX @R0,A //----寻址外部RAM,用MOVX指令
AJMP LOOP

HERE:
MOV R0,#60H
MOV A,#'N' //-----你这个地方如果用'N'来表达,会更加易读
MOVX @R0,A

LOOP:AJMP LOOPEND

系列声明.....


无效的主要()
{
?解释?,K,S,Q;
?字符CH;
? Z = K = S = Q = 0;
? (CH(CH = getchar函数(); CH ='\ n';}

?{
?> ='A'&& CH ='A'&& CH ='Z')
??Z + +;
??否则,如果(CH =='')
?? + +;
???否则,如果(CH> = '0'&& CH <= '9')
???K??+ +;
? ??Q + +;
???CH = getchar函数();
??
?输出(图片:%d \ nspace:%d \ nshuzi:%d \ nqita:%é\ n“Z,K,S,Q);
}

;很简单的,如下即可达到目的:

ORG 0000H
MOV R0, #30H
MOV R1, #10
LOOP: CJNE @R0, #41H, NEXT
MOV A, #'Y'
SJMP W_XRAM
NEXT: INC R0
DJNZ R1, LOOP
MOV A, #'N'
W_XRAM: MOV R0, #60H
MOVX @R0, A
SJMP $
END


用汇编语言编一个程序
代码如下:; 显示三角形data SEGMENT ORG 100H STAR DB '* ', '$' SPACE DB ' ', '$' ;空格 LINE DB 0DH, 0AH, '$' ;换行data ENDSstack SEGMENT PARA STACK DW 256 DUP(?)stack ENDScode SEGMENT ASSUME CS: code, DS: dataBEGIN: M...

汇编语言编写一个简单的程序(我学的是汇编语言与接口技术)
;请从键盘任意输入一个0-59内的数,每隔一秒自加一,当加到59后跳到0从新开始自加 DATAS SEGMENT ;此处输入数据段代码 MESS0 DB 'Error char!','$' ;异常信息 MESS1 DB 'Input overflow!','$'MESS2 DB 'Must be 0~59!','$'SEPRA DB 0DH,0AH,'$' ;分隔符 TIME DB 0 MADD...

请问汇编程序, 解释程序, 编译程序分别指?
采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。2、解释程序 解释程序是一种语言处理程序,在词法、语法和语义分析方面...

汇编语言是一种什么程序设计语言?
比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在...

用汇编语言编写一个简单程序
1.计算U=(X+(Y*Z-100))\/W 其中:X,Y,Z,W均为十六位有符号数。程序如下:DATA SEGMENT X DW 10 ;16位变量 Y DW 20 Z DW 30 W DW 40 U DW ?,?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,Y IMUL Z ;计算Y*Z,内容放在DX...

用汇编语言编写下面两个程序
一、assume cs:code,ds:data data segment bufx db ?bufy db ?bufz db ?data ends code segment start:mov ax,data mov ds,ax mov al,bufx cmp al,bufy jae next mov al,bufy next:mov bufz,al mov ax,4c00h int 21h code ends end start 二、assume cs:code,ds:data data segment...

用汇编语言编写如下程序:
1.;设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN X X X X X”显示出次数。DATAS SEGMENT ;此处输入数据段代码 ENG DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$'SUN DB 'JKL$'DB 6 DUP (?)TOP LABEL WORD DB '$'DATAS ENDS CODES...

什么是汇编语言程序
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编。

汇编语言程序是什么
计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。 1. 机器语言 电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机...

汇编语言: 编写一个完整源程序完成如下功能
;1题 data segemnt VAR1 db 35h RES1 db 0h RES2 db 0h data ends ;--- code segment assume cs:code ,ds:data main proc far start:mov ax,data mov ds,ax xor ax,ax mov al,VAR1 and al,00001111b mov RES1,al mov al,VAR2 and al,11110000b mov RES2,al mov ah,4ch i...

涿州市15266615015: 从键盘输入10个字型整数(输入过程要求显示),求出其中最大的数.将其以十进制(或16进制)形式显示在屏用汇编语言编写程序 -
吉昆小儿:[答案] 怎么那么巧,我刚刚帮人写个这样的程序,还一模一样的,呵呵,也送给你吧 ;功能:从键盘输入10个字型整数(输入过程要求显示),求出其中最大的数.将其以十进制(或16进制)形式显示在屏 ;可以输入负数,帮你扩展了下,可以输入的不止...

涿州市15266615015: 运用汇编语言,编写程序,将10个字符中查找字母'A',有则在外部RAM60H单元中存储Y,否则为N -
吉昆小儿: 你的程序基本的思路上是正确的,有个致命错误地方是,题目要求在外部RAM60H处存储Y或者N, 你的程序是在内部RAM60H处存储的,再还有点小的瑕疵,我给你修改一下,先看你的原来的程序:ORG 0000H MOV R0,#40H 将首字符地址...

涿州市15266615015: 用汇编编写求10个字之和的程序怎么写 -
吉昆小儿: data segment array dw -10H,20H,23H,56H,45H,65H,45H,66H,444H,4444H max dw 0 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,10 xor si,si lp: mov ax,array[si] cmp max,a

涿州市15266615015: 用汇编语言编写,将一个包含10个带符号数的数组分成正数数组和负数数组.要代码! -
吉昆小儿: DATA SEGMENT NUM DB 1,2,...,10 ;这个你随便写10个字节的数据 P DB 10 DUP(?) ;正数组 PNUM DB 0 ;正计数 N DB 10 DUP(?) ;负数组 NNUM DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC...

涿州市15266615015: 8086汇编语言编程完成 将内存3500H单元开始存放的0~9共十个字节数传递到3600H单元 -
吉昆小儿: mov cx,10 mov ax,0 mov ds,ax mov ax,0 mov es,ax mov si,3500h mov di,3600h rep movsb

涿州市15266615015: 求高人编写程序,编写汇编语言源程序,完成10个字节数据的相加 -
吉昆小儿: 假设从00000h处开始,dx为相加后得到的结果.mov ax,0 mov ds,ax mov bx,0 mov ax,0 mov dx,0 mov cx,10 s:mov al,[bx] mov ah,0 add dx,ax inc bx loop s

涿州市15266615015: 1、用汇编语言编一程序找出十个字节数中最大的数,(十个数自拟,要 -
吉昆小儿: SSEG SEGMENT STK DW 200 DUP(0) SSEG ENDS DSEG SEGMENT TIP1 DB 13, 10, 'MAX = ', 36 TIP2 DB 13, 10, 'MIN = ', 36 XXX DB 37, 8, 4, 96, 100, 124, 5, 92, 35, 2 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG, SS:...

涿州市15266615015: 用汇编语言编写一个程序 -
吉昆小儿: 如下即可:DATAS SEGMENTTIPS DB 10, 13, 'Please input a number (1~8): $'CRLF DB 10, 13, 36 DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX, DATASMOV DS, AX LOP:LEA DX, TIPSMOV...

涿州市15266615015: 汇编语言:编写将10个无符号二进制数按由小到大的顺序排列的程序,能正确运行有追加 -
吉昆小儿: ;---------------------------------- SORT PROC ;排序子程序.XOR CX, CXMOV CL, ACTLEN ;数字个数DEC CXmov si, offset CHARS ;起始地址 s: push cxmov di, si s1: mov al, [di]inc dicmp al, [di]jb jxxchg al, [di]mov [di - 1], al jx:loop s1pop cxloop sRET ;子程序返回主程序. SORT ENDP ;----------------------------------

涿州市15266615015: 从数据段DAT开始,存放有10个字节无符号数.找出中最大的数并放入MAX单元中,请用汇编语言编写相应的程序 -
吉昆小儿: 大概忘了汇编语言了,大概是这样的- - 比较第一个数和第二个数的大小,大的放进MAX.然后拿MAX的数放到某寄存器,再和第三个数比较大小(用跳转重复比较的过程会方便点),以此类推.....好久不用,我忘了好多了,大概就这样吧...我也不知道你觉得这个难在哪里,也没有针对性的解释,希望回答对你有帮助- - 其实这个是最简单的了- -

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网