用汇编语言编写如下程序:

1。设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUNXXXXX”显示出次数。2。从键盘输入一系列以$为... 1。设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN X X X X X”显示出次数。
2。从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。
3。把0--100d之间的30个数存入以GRADE为首地址的30个数组中,GRADE+1表示学号为i+1的学生的成绩。另一个数组RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。编写一程序,根据GRADE 中的学生成绩,讲学生名次填入RANK数组中。(提示:一个学生的名次等于成绩高于这个学生是人数加1)
麻烦高手帮帮忙啊 非常感谢!!!
展开
 我来答
Ron2018
2010-05-29 · TA获得超过3285个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:500万
展开全部
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 SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
XOR AX,AX ;保存出现次数
LEA BX,ENG
CLD
L1: MOV CX,4 ;这里比SUN的长度大1位
MOV SI,BX
LEA DI,SUN
REPE CMPSB
DEC SI ;回退一个字节
JCXZ L3 ;如果比较次数用完,表示匹配
INC BX
L2: CMP BYTE PTR [BX], '$'
JNE L1
JMP SHORT L4

L3: INC AX
MOV BX,SI
JMP SHORT L2

L4: LEA SI,TOP
MOV BX,10
L5: XOR DX,DX ;转换为十进制字符
DIV BX
OR DL,30H
DEC SI
MOV [SI],DL
CMP AX,0
JNE L5

MOV AH,9
LEA DX,SUN
INT 21H
MOV DX,SI
INT 21H

MOV AH,4CH
INT 21H
CODES ENDS
END START

2.
;*************************************
;从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,变革显示技术结果
;*************************************
STACKS SEGMENT
;此处输入堆栈段代码
DW 6 DUP (?)
TOP LABEL WORD
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,SS:STACKS
START:
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP
;此处输入代码段代码
L1: XOR BX,BX ;BX保存非数字字符的数量
MOV AH,1
L2: INT 21H

CMP AL,'$'
JE L4 ;输入$时,输入字符串完毕,计数完毕,输出结果

CMP AL,30H
JB L3
CMP AL,39H
JNA L2 ;输入为0~9之间的数字时,进行下次输入

L3: INC BX
JMP SHORT L2;进行下次输入

L4: MOV AX,BX
MOV BX,10
L5: XOR DX,DX ;转换为十进制数字
DIV BX
OR DX,30H
PUSH DX
CMP AX,0
JNZ L5

MOV AH,2 ;输出结果
MOV DL,' ' ;分隔符
INT 21H

L6: POP DX
INT 21H
CMP SP,OFFSET TOP
JNE L6

MOV DL,' ' ;分隔符
INT 21H

JMP SHORT L1;进行下一个字符串的输入

MOV AH,4CH
INT 21H
CODES ENDS
END START

3.
DATAS SEGMENT
;此处输入数据段代码
GRADE DW 88,75,95,63,98,78,87,78,90,60;自行定义 ;成绩
COUNT EQU ($-GRADE)/2
RANK DW COUNT DUP (1) ;排名,初始值为1,大家都第一名,同一起跑线哈
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,0 ;要排名的学生号码
MOV CX,COUNT
L1:
MOV AX,GRADE[SI] ;获得第SI号学生的成绩
MOV BX,RANK[SI] ;获得第SI号学生的初始排名

MOV DX,CX ;保存CX
MOV DI,0 ;要比较的学生的号码
MOV CX,COUNT
L2:
CMP AX,GRADE[DI] ;逐个比较
JNB L3
INC BX ;低于某一个学生的成绩,则排名加1
L3:
ADD DI,2
LOOP L2

MOV RANK[SI],BX ;保存排名
ADD SI,2
MOV CX,DX
LOOP L1

MOV AH,4CH
INT 21H
CODES ENDS
END START
秒懂百科
2021-05-04 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式