汇编实验三:分类统计字符个数

合集下载

计算机硬件技术基础实验答案程序

计算机硬件技术基础实验答案程序

实验一:简单程序设计实验(1)编写一个32 位无符号数除法的程序,要求将存放在NUM1 中的32 位无符号数与存放在NUM2 中的16 位无符号数相除,结果存放在程序流程图略。

参考源程序:NUM1 DD 2A8B7654HNUM2 DW 5ABCHNUM3 DW ?NUM4 DW ?ASSUME DS:DATA, CS:CODE;数据段寄存器初始化MOV AX, WORD PTR NUM1MOV DX, WORD PTR NUM1+2DIV NUM2MOV NUM3,AXMOV NUM4,DXEND START(2)编写一个拆字程序。

要求将存放在ARY 单元的2 位十六进制数X1X2 拆为X1 和X2 两部分,并以0X1 和0X2 的形式分别存入ARY+1 和ARY+2 单元中。

程序流程图略。

参考源程序:DATA SEGMENTARY DB 2AH,?,?DATA ENDSCODE SEGMENTASSUME DS:DATA, CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET ARY MOV AL,[SI] ;取ARY 的偏移地址;取16进制数至ALNUM3 和NUM4 中。

DATA SEGMENTDATA ENDS CODE SEGMENTSTART: MOV AX,DATAMOV DS,AXCODE MOV AH,4CHINT 21HENDS;正常返回DOS 系统MOV BL,ALAND AL,0F0H;取16进制数的高四位,即X1SHR AL,4MOV [SI+1],AL ;存0X1 MOV AL,BLAND AL,0FH; 取16 进制数的低四位,即X2MOV [SI+2],AL ;存0X2MOV AH,4CHINT 21HENDSEND STARTCODE实验二:分支程序设计实验(1)编写一个字符比较程序,比较 3 个无符号字节数 A ,B ,C 的大小,并根据比较结果 对变量 K 赋值:如果 3 个数不相等,则 K=0 ; 如果 3 个数中有两个相等,则 K=1 ; 如果 3 个数都相等,则 K=2 。

汇编-统计输入字符串内的数字个数(最多三位数0—256)

汇编-统计输入字符串内的数字个数(最多三位数0—256)

汇编:统计输入字符串内的数字个数(最多三位数0—256);This is made by wq;编程从键盘读入不超过256 个字符的字符串;;编程统计其中数字的个数,并将结果在屏幕上输出。

;经进一步完善(能输出三位数啦)DATAS SEGMENT sum db 00h ;累加器string db 256 dup(0dh);存放字符tital db This program is made by wq.,0dh,0ah db It is used to calculater the amout of the number in the string ,0dh,0ah,$ tital1 db PLease input the string: ,$ overs db Amout of the nember is : ,$ tital2 db Do you want to have a try again(if yes,input “y” else “n”) : ,0dh,0ah, $ tital3 db Welcome to use this program again,$ kongzi db 0dh,0ah,$ result db 256 dup(?)DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX mov ax,offset tital;输出抬头mov dx,ax mov ah,09h int 21hmain: lea dx,kongzi mov ah,09h int 21h lea dx,tital1 ;输出抬头1 mov ah,09h int 21h mov si,0 mov ax,offset string mov dx,axagain: ;输入字符mov ah,01h int 21h cmp al,0dh jz then mov string[si],al inc si jmp again ;输入完毕then: ;传输mov di,0 mov si,0 mov bl,0exchang: ;判断字符的性质lea dx,string cmp string[si],0dh jz over cmp string[si],30h jnb next inc si dec cx jmp exchangnext: mov al,string[si] cmp string[si],39h jbe calculator inc si dec cx jmp exchangtips:感谢大家的阅读,本文由我司收集整编。

计数字符在所有字符中的个数

计数字符在所有字符中的个数

计数字符在所有字符中的个数在现代社会中,计算机和互联网的普及使得人们更加关注字符的计数,尤其是在信息传递和文本处理方面。

字符的计数可以帮助人们更好地理解和分析文本,同时也对文本的编辑和排版起到重要的指导作用。

在我们日常的文字交流中,字符的计数无处不在。

无论是写作文章、发送短信,还是编写程序代码,都需要对字符进行计数。

而字符的计数也是评估文本长度、统计信息量的重要手段之一。

下面我们将深入探讨字符计数的相关问题。

我们需要明确字符的定义。

字符是计算机中的最小的数据单元,可以是字母、数字、标点符号、空格等。

不同的字符在计算机中有不同的编码方式,比如ASCII码、Unicode等。

在进行字符计数时,我们需要考虑所有的字符类型,确保计数的准确性。

字符计数的方法也有多种。

最常见的方法是通过计算文本中的字符数量来得到结果。

这种方法简单直接,适用于大多数情况。

另外,还可以通过编写程序来实现字符计数。

通过编程,我们可以更加灵活地控制计数的方式,比如可以排除特定的字符或统计特定字符的数量。

在实际应用中,字符计数有着广泛的应用。

在写作方面,字符计数可以帮助作者控制文章的长度,确保文章的完整性和准确性。

在新闻报道中,字符计数可以帮助编辑控制标题的长度,使标题简洁明了,吸引读者的注意力。

在程序开发中,字符计数可以帮助程序员检查代码中的字符数量,避免代码过长或过繁琐。

字符计数也可以用于统计文本的信息量。

在自然语言处理领域,字符计数可以帮助研究人员统计文本中的词频、短语频率等,从而得到更加准确的语言模型。

在信息检索和搜索引擎中,字符计数可以帮助排名算法对搜索结果进行排序,提高搜索的准确性和效率。

尽管字符计数在很多场景中都有着重要的作用,但我们也需要注意一些问题。

首先,字符计数可能受到文本的格式和编码方式的影响。

比如在HTML文档中,标签和样式信息也会被计入字符的数量中。

另外,字符计数也不一定等同于字数计数,因为不同的语言和文字系统中,字符和字的关系可能并不一致。

【精品文档】汇编语言-统计字符串中的字符个数

【精品文档】汇编语言-统计字符串中的字符个数

prompt2 byte cr, lf, "the string have ", 0 count1 dword 11 dup (?) prompt3 byte ' char',cr, lf, 0 string byte 100 dup (?)
.CODE count
proc near32 push ebp mov ebp, esp
INCLUDE io.h
; header file for input/output
cr
EQU 0dh ; carriage return character
Lf
EQU 0ah ; line feed
.STACK 4096
; reserve 4096-byte stack
.DATA prompt1 byte cr, lf, "Please input your string:",cr, lf,0
实 验 结 果 分 析 及 心 得 体 会
成 绩 评 定
备注:源代码附后,源代码要求有注释说明
教师签名mple assembly language program -- count number of chars in the string ; Author: duchuanhu ; Date: revised 12/08
.386 .MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
output prompt2 output count1 + 8 output prompt3
INVOKE ExitProcess, 0 ; exit with return code 0

汇编_分类统计字符个数(附源代码)

汇编_分类统计字符个数(附源代码)

汇编_分类统计字符个数(附源代码);****分类统计字符个数************data segmentstring db 82db 82 dup (?)letter dw ?digit dw ?other dw ?nextli db 0dh,0ah,'$'printl db 'please a string',0dh,0ah,'-:$' leprin db 'letter number:$'diprin db 'digiter number:$'otprin db 'other char:$'data ends;--------------------------------code segmentmain proc farassume ds:data,es:data,cs:codestart:mov ax,datamov ds,axmov es,ax;--------------------------------mov ah,09hlea dx,printlint 21hmov ax,0mov ah,0ahlea dx,stringint 21h;--------------------------------mov ah,09hlea dx,nextlimov si,0inc simov cl,string[si]mov ax,0mov bx,0mov dx,0;--------------------------------loop1:inc sicmp string[si],2fhjl cod1cmp string[si],3ahjnl cod2inc bxjmp cod4cod2:cmp string[si],40hjl cod1cmp string[si],5bhjnl cod3inc axjmp cod4cod3:cmp string[si],60hjl cod1cmp string[si],7bhjnl cod1inc axjmp cod4cod1:inc dxcod4:loop loop1mov digit,bxmov other,dxmov ah,09hlea dx,leprinint 21hmov ax,lettercall printmov ah,09hlea dx,nextliint 21hmov ah,09hlea dx,diprinint 21hmov ax,digitcall printmov ah,09hlea dx,nextliint 21hmov ah,09hlea dx,otprinint 21hmov ax,othercall printmov ah,09hlea dx,nextliint 21h;-------------------------------- mov ah,01hint 21hmov ah,4chint 21h;-------------------------------- main endp;-------------------------------- ;****实现输出的⼦程序************ print proc near push axpush simov bl,0ahloop2:div blmov dl,ahpush dxinc cxmov ah,0cmp ax,0jnz loop2printf:pop dxadd dx,30hmov ah,02hint 21hloop printfpop axpop bxpop cxpop dxpop siretprint endp;-------------------------------- code endsend start2.输⼊字符,得出结果.386.model flatExitProcess proto near32 stdcall, dwexitcode:dword INCLUDE io.hcr EQU 0dhprompt1 BYTE cr,lf,lf,"Please enter the string(<80).",cr,lf,lf BYTE "The string is:",0stringIn BYTE 1 DUP (?)charLabel BYTE cr,lf,"The number of char is:"char BYTE 16 DUP (?)BYTE cr,lf,0numberLabel BYTE cr,lf,"The number of number is:" number BYTE 16 DUP (?)BYTE cr,lf,0otherLabel BYTE cr,lf,"The number of other is:"other BYTE 16 DUP (?)BYTE cr,lf,0.CODE_start: output prompt1 ;提⽰输⼊字符mov ax,0mov bx,0mov cx,0begin:input stringIn,1;输⼊字符cmp stringIn,0dhje forOut ;是回车则结束程序cmp stringIn,0dhjb forOther ;ASCII码值⼩于0dh则其他字符数加1cmp stringIn,2fhjbe forOther;ASCII码值⼩于或等于2fh则其他字符数加1 cmp stringIn,39hjbe forNumber;ASCII码值⼩于或等于39h则数字数加1 cmp stringIn,40hjbe forOther;ASCII码值⼩于或等于40h则其他字符数加1 cmp stringIn,5ahjbe forChar;ASCII码值⼩于或等于5ah则字母数加1 cmp stringIn,60hjbe forChar;ASCII码值⼩于或等于7ah则字母数加1 jmp forOther;其他字符数加1forOther: ;其他字符数加1,回到循环开始inc ax jmp beginforNumber: ;数字数加1,回到循环开始inc bxjmp beginforChar: ;字母数加1,回到循环开始inc cxjmp beginforOut:itoa other,axoutput otherLabel ;输出其他字符数itoa number,bxoutput numberLabel ;输出数字数itoa char,cxoutput charLabel ;输出字母数INVOKE ExitProcess,0PUBLIC _startEND。

理工汇编语言实验三字符串操作实验.

理工汇编语言实验三字符串操作实验.

实验三字符串操作实验(设计性实验一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基本指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。

二、软硬件环境1、硬件环境:计算机系统 windows ;2、软件环境:装有 MASM 、 DEBUG 、 LINK 、等应用程序。

三、实验涉及的主要知识1、字符串处理基本操作流程(1利用 SI 寄存器保存源串首地址;(2利用 DI 寄存器保存目的串首地址;(3利用 CX 寄存器保存字符串长度;(4利用 CLD 或 STD 指令设置字符串处理方向;(5利用字符串处理指令实现相关处理。

其中, CLD 指令使 DF=0,在执行串处理指令时可使地址自动增量; STD 使 DF=1,在执行串处理指令时可使地址自动减量。

提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。

2、重复前缀指令 :重复次数由计数寄存器 CX 中存放的值决定,指令每重复执行一次,计数器 CX 中值减 1, 当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令REP 无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为 0 为止。

经常与 REP 配合工作的字符串处理指令有 MOVS 、 STOS 和 LODS 。

REPE/REPZ 判断计数寄存器的内容 CX 是否为 0 或 ZF=0(即比较的两个操作数不等 , 只要满足一个则重复执行结束,否则继续执行。

可以与 REPE/REPZ 配合工作的串指令有 CMPS 和 SCAS 。

REPNE/REPNZ 判断计数寄存器的内容是否为 0 或 ZF=1(即比较的两个操作数相等, 只要满足一个则重复执行结束,否则继续执行。

可以与 REPE/REPZ 配合工作的串指令有 CMPS 和 SCAS 。

3、字符串处理基本指令(1 MOVS 传送指令格式:MOVS DST, SRC 或 MOVSB (传送字节或 MOVSW (传送字。

分类统计字符个数

分类统计字符个数

分类统计字符个数
中文字符指的是汉字、拼音、汉语标点符号等,是构成中文语言的基本单位。

在中文领域,分类统计汉字的数量及其使用情况已有多年的历史,可以为文字记录、语言学研究、数字化技术应用提供重要依据。

首先,统计字符的数目可以有效地记录中文字符数据,以便研究如何使用字符及其使用情况的变化。

从古代开始,就有多种不同的方法用于统计字符数目,但是,近几年来,随着计算机技术和语言学的发展,新的变化也被引入到字符统计中。

例如,通过计算机对文本中的字符进行自动编码,可以准确统计汉字数量。

此外,在统计字符数目时,也可以按照字符的使用频率来分类。

其中,常用字符是指经常使用的汉字,较少使用的汉字称为次常用字符。

这种分类可以有效地了解字符的使用状况。

从类别上看,常用的字符数量一般较多,但次常用字符的使用数量却相对较少。

另外,分类统计字符也可以用来回答一系列关于中文字符使用情况的问题。

例如:有多少汉字总共存在?哪些字符使用最广泛?应该如何改进字符使用方式?等等。

这些问题的解决对于提高中文记录的质量,提升中文数字化技术的应用,以及改善中文字符数据的统计技术具有重要意义。

综上所述,分类统计字符的数量及其使用情况的研究与应用有着非常重要的意义。

它不仅可以有效地记录和统计中文字符数据,还可以回答有关中文字符使用情况的一系列问题。

未来,分类统计字符还
将在中文文字记录、语言学研究、数字化技术应用等方面发挥重要作用。

c语言字符个数统计长字符串中不同字符数 -回复

c语言字符个数统计长字符串中不同字符数 -回复

c语言字符个数统计长字符串中不同字符数-回复C语言字符个数统计长字符串中不同字符数在编程的世界中,经常会遇到需要统计字符串中不同字符个数的问题。

对于初学者来说,这似乎是一个相对简单的问题,但实际上,它涉及了很多基本的概念和技巧。

本文将以C语言为基础,详细解释如何使用C语言来统计长字符串中不同字符的个数。

首先,让我们了解一下C语言中的字符数据类型。

在C语言中,字符被定义为一种基本数据类型,用于存储单个字符。

我们可以使用单引号将字符常量括起来,例如'a','b','c'等。

字符变量可以用来存储单个字符,字符数组可以用来存储一系列字符。

在C语言中,字符串是由字符构成的字符数组。

字符串以空字符'\0'结尾,表示字符串的结束。

C语言提供了许多函数来操作字符串,包括字符串长度函数strlen(),字符串复制函数strcpy(),字符串连接函数strcat()等。

要统计长字符串中不同字符的个数,我们可以使用一个字符数组来存储已经出现的字符,并使用一个计数器变量来记录不同字符的个数。

具体的步骤如下:1. 声明一个字符数组和一个计数器变量。

char charArray[256]; 假设字符串中的字符取值范围在ASCII码的0-255之间int count = 0;2. 初始化字符数组中的元素为0。

这一步是非常重要的,因为在C语言中,未初始化的变量会被赋予一个随机的值,这可能导致错误的计算结果。

cmemset(charArray, 0, sizeof(charArray));3. 遍历长字符串的每个字符。

cfor (int i = 0; i < strlen(longString); i++) {统计每个字符出现的次数}4. 在循环中,对于每个字符,先判断它是否已经出现过。

如果字符数组中对应位置的值为0,则表示该字符尚未出现,需要将计数器加一,并将字符数组对应位置的值设为1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的
学习用汇编语言编写设计分支循环程序
二、实验要求
程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit 和other为名的存储单元中。

三、实验提示
(1)程序可0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数。

也可01H功能调用在接收字符后先分类计数再存入缓冲区中。

(2)程序需要进入debug运行并查看计数结果。

四、实验程序
datarea segment
stringdb 80
db ?
db 80 dup(?);定义字符串string,长度为80
letterdb 0;定义存储单元letter
digitdb 0;定义存储单元digit
otherdb 0;定义存储单元other
datarea ends
case segment
mainprocfar
assume cs:
case, ds:
datarea
start:
movax, datarea
movds, ax
leadx, string
movah, 0ah
int21h
leadi, string + 2;输入一行字符,依次将每个字符存入字符串string中subch,ch
movcl, string + 1
adddx, 2
check:
;将每个字符进行分类
moval, [di]
cmpal, 0dh
jeexit;字符串以回车符结束,若进行分类的字符是回车符,则跳转至exit,退出程序
cmpal, 30h;与ASCII码中的0,即30h比较
jbo;小于30h的,为其他类型字符,则跳转至o,在other块进行操作cmpal, 39h;与ASCII码中的9,即39h比较
jnad;不大于39h的,结合不小于30h的,则跳转至d,在digit块进行操作jaloro;剩下的为字母或者其他类型
loro:
cmpal, 41h;与ASCII码中的A,即41h比较
jbo;小于41h的,结合大于39h的,则跳转至o,在other块进行操作cmpal, 7ah;与ASCII码中的z,即7ah比较
jao;大于7ah的,则条钻至o,在other块进行操作
cmpal, 5ah;与ASCII码中的Z,即5ah比较
jnal;不大于5ah的,结合大于41h的,则跳转至l,在letter块进行操作cmpal, 61h;与ASCII码中的a,即61h比较
jnbl;不小于61h的,结合不大于7ah的,则跳转至l,在letter块进行操作jbo;小于61h的,结合大于5ah的,则跳转至o,在other块进行操作l:
incletter;属于letter类型,则letter增1
incdi
jmpcheck;返回继续比较下一个字符
d:
incdigit;属于digit类型,则digit增1
incdi
jmpcheck
o:
incother;属于other类型,则other增1
incdi
jmpcheck
exit:
;输出letter,digit,other类型的计数结果movah, 02
movdl, 0dh
int21h
movdl, 0ah
int21h
movdl, 4ch
int21h
movdl, 3ah
int21h
movdl, 0
int21h
xorax, ax
moval, letter
calldisplay;调用子程序display,输出movah, 02
movdl, 0dh
int21h
movdl, 0ah
int21h
movdl, 44h
int21h movdl, 3ah int21h movdl, 0
int21h xorax, ax moval, digit calldisplay movah, 02 movdl, 0dh int21h movdl, 0ah int21h movdl, 4fh int21h movdl, 3ah int21h movdl, 0
int21h xorax, ax moval, other
calldisplay movax, 4c00h
int21h
main endp movbl, 10
divbl
pushax
movdl, al
adddl, 30h movah, 2
int21h
popax
movdl, ah
case ends
end startadddl, 30h movah, 2
int21h
ret
display endp
五、调试结果。

相关文档
最新文档