汇编实验三:分类统计字符个数
计算机硬件技术基础实验答案程序
实验一:简单程序设计实验(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);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语言中,字符被定义为一种基本数据类型,用于存储单个字符。
我们可以使用单引号将字符常量括起来,例如'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。
从键盘输入一串字符,分别统计其中的字母,数字字符和其他
汇编编程:从键盘输入一串字符,分别统计其中的字母(不区分大小写)、数字字符和其他键盘输入一串字符,统计出其中的数字字符个数,字母字符(不区分大小写)个数,其他字符个数,并显示出这三类统计结果(输入字符串以回车结束),可连续对多个字符串统计,用户输入N时退出程序。
要求:题目分析(如何实现,以及实现的关键技术或步骤)2.要有流程图3.写出程序代码4.写出上机操作步骤,给出输入的数据及程序运行结果。
; 题目名称:分类统计字符; 题目来源:/question/131013276.html; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code SegmentAssume CS:Code,DS:Code; -------------------------------------; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr=字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addrlea dx,Str_Addrmov ah,9int 21hEndM; -------------------------------------; 功能:在当前光标位置显示一个字符; 入口:dl=要显示的字符Output_Chr proc Nearpush axmov ah,02hint 21hpop axretOutput_Chr Endp; -------------------------------------; 功能:显示、输出一个回车、换行Output_CTLF proc Nearpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axretOutput_CTLF Endp; -------------------------------------; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示; 入口:AX=二进制数; 出口:在当前光标位置显示转换后的ASCII码数字Unsi_Dec_ASCII Proc Nearpush dxpush bxpush dimov bx,10lea di,@@Temp_Save[5]mov BYTE PTR [di],'$'dec dicld@@Divide: xor dx,dxdiv bxor dl,30hmov [di],dldec ditest ax,axjnz @@Divideinc dipush dipop dxmov ah,9int 21hpop dipop bxpop dxret@@Temp_Save db 6 dup(?)Unsi_Dec_ASCII EndP; -------------------------------------; 功能:键盘输入一个字符,若输入的是'y'或'n'(不分大小写),则显示并返回; 入口:无; 出口:若输入的是'y',进位标志置位;若输入的是'n',进位标志复位。
汇编实验三报告 分类统计字符个数COUNT_CHAR
计算机学院计算机科学与技术专业8 班学号姓名协作者_________ 教师评定_________________实验题目实验用2.3分类统计字符个数COUNT_CHAR一、实验目的与要求学习用汇编语言编写与设计分支循环程序。
题目:分类统计字符个数COUNT_CHAR二、实验内容程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other 为名的存储单元中。
三、程序代码;******************************************Data segmentstring1 db 'Input your string:$'string2 db 'Digit:$'string3 db 'Letter:$'string4 db 'Other:$'Digit db 0Letter db 0Other db 0data ends;*******************************************prognam segment;-----------------------------------------------------------------main proc farassume cs:prognam,ds:datastart:push ds ;保留现场sub ax,axpush axmov ax,datamov ds,axlea dx,string1 ;输出string1mov ah,9int 21hmov c x,80L1:mov ah,1 ;输入字符int 21hcmp al,0dh ;若是回车则结束jz overcmp al,30h ;若小于30h(0)则others+1jb otherscmp al,39h ;若大于39h(9)则跳转L2继续比较ja L2jmp digits ;否则digits+1L2:cmp al,41h ;若小于41h(A)则others+1jb otherscmp al,5ah ;若大于5ah(Z)则跳转L3继续比较ja L3jmp letters ;否则letters+1L3:cmp al,61h ;若小于61h(a)则others+1jb otherscmp al,7ah ;若大于7ah(z)则others+1ja othersjmp letters ;否则letters+1digits:inc digitjmp over1others:inc otherjmp over1letters:inc letterjmp over1over1:loop L1over:call e ndlinelea dx,string2 ;输出string2mov ah,9int 21hsub ax,axmov al,digitcall displaycall e ndlinelea dx,string3 ;输出string3mov ah,9int 21hsub ax,axmov al,lettercall d isplaycall e ndlinelea dx,string4 ;输出string4mov ah,9int 21hsub ax,axmov al,othercall d isplayretmain endp;------------------------------------------------------------------------------ endline proc near ;输出回车与换行mov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hretendline endp;----------------------------------------------------------------------------------- display proc near ;输出结果mov dl,aladd dl,30h ;0的ascii码是30mov ah,2int 21hretdisplay endp;--------------------------------------------------------------------------------------- prognam ends;********************************************************* end s tart四、运行结果附录:由于这个实验一开始做错了题目,实验课上机检查是检查了该程序实验2.2查找匹配字符串程序代码:;---------------------------------------------newline macro ;回车换行的宏定义mov ah, 02hmov dl, 0dhint 21hmov ah, 02hmov dl, 0ahint 21hendm;------------------------------------------------data segmentmaxlenk db 8 ;关键字的最大长度factlenk db ? ;关键字的实际长度keyword db 8 dup(?) ;关键字的存储maxlens db 32 ;字符串的最大长度factlens db ? ;字符串的实际长度sentence db 32 dup(?) ;字符串的存储info1 db 'Enter Keyword:$'info2 db 'Enter Sentence:$'mess0 db 'Match at location:$'mess1 db 'No match.$'mess2 db ?,?,'H of the sentence.$'data ends;------------------------------------------------------stack segment stackstack ends;------------------------------------------------------code segment;------------------------------------------------------main proc farassume cs:code, ds:data, es:data, ss:stackstart:push dssub ax, axpush axmov ax, datamov ds, axmov es, axmov ah, 09h ;输出字符串信息lea dx, info1int 21hmov ah, 0ah ;输入关键字lea dx, maxlenkint 21hbegin:newlinemov ah, 09hlea dx, info2int 21hmov ah, 0ah ;输入字符串lea dx, maxlensint 21hnewlinelea si, keyword ;关键字的首地址赋予silea bx, sentence ;字符串的首地址赋予bxlea di, sentence ;字符串的首地址赋予dimov dl, 00h ;对dl清零cld ;方向标志位清零,字符串地址递增again:mov cl, factlenkrepz cmpsbjz matchmov al, factlenssub al, factlenkjs next1inc allea si, keywordinc bxmov di, bxinc dxcmp dl, aljl againnext1:lea dx, mess1mov ah, 09hint 21hjmp beginmatch:lea dx, mess0mov ah, 09hint 21hmov ax, bxlea bx, sentencesub ax, bxmov bx, 0001hadd ax, bxand ax, 00ffhxchg ax,bxmov ch, 2rotate:mov cl,4hrol bl,clmov al,bland al,0fhadd al,30hcmp al,3ahjl printadd al,7hprint:mov ah,02hmov dl,alint 21hdec chjnz rotatemov ah,09hlea dx,mess2int 21hjnl beginretmain endpcode endsend start运行结果:。
IBM-PC汇编语言程序实验报告
华北电力大学实验报告名称:汇编语言程序设计综合实验院系:信息工程系班级:网络工程10k1 学号:学生姓名:指导教师:设计天数:成绩:日期:年月日实验一用表格形式显示ASCII字符一、实验说明:按15行X16列的表格显示表示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的次序一次显示对应的字符。
每16个字符为一行,每行中的相邻来那个字符之间用空白(ASCII为0)隔开。
(1)显示每个字符可使用功能号为02的现实输出功能调用,使用方法如下:mov ah,02hmov dl,输出字符的ASCII码int 21h本题中可把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASCII码。
(2)显示空白符时,用其ASCII码置入dl寄存器。
每行结束时,用显示回车(ASCII为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。
(3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而现实空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相机的ASCII字符。
具体使用方法:在显示空白或回车、换行符前用指令push dx把dl的内容保存到堆栈中去。
在现实空白或回车、换行符后用指令pop dx恢复dl寄存器的原始内容。
二、程序代码:code segmentassume cs:codestart:mov dx,0010h ;初值为10hnext:mov cx,0010h ;16列loop1:mov ah,02h;int 21h ;显示输出dl字符inc dx ;dx加1push dx ;把dx推进栈保存mov dl,0 ;显示空白符int 21hpop dx ;把dx之前的数取回来loop loop1 ;当cx=0时会自动跳出loop1循环push dx ;保存dx的数,即为了保存ascii码mov dl,0ah ;显示回车int 21h ;02的显示输出功能调用mov dl,0dh ;显示换行符int 21hpop dx ;把dx之前的数取回来cmp dx,100h ;最后的字符的ascii码为100h,相比较jb next ;小于时就跳会nextmov ah,4ch ;带返回码终止int 21hcode endsend start三、运行结果实验二查找匹配字符串一、实验说明程序接受用户键入的一个关键字以及一个句子。
分类统计各类字符个数解题思路
分类统计各类字符个数解题思路
解题思路可以分为以下几个步骤:
1. 数据预处理:首先,我们需要对原始数据进行预处理,包括去除无关字符、统一字符编码等。
这样可以确保我们的统计结果是准确的。
2. 定义字符类别:我们需要明确哪些字符属于同一类别。
例如,我们可以将字母、数字、标点符号等分别定义为不同的类别。
3. 遍历字符串:接下来,我们需要遍历整个字符串,对每个字符进行分类。
我们可以使用一个字典来记录每个类别的字符数量。
4. 计数与统计:在遍历过程中,如果当前字符属于某个类别,我们就将该类别的计数器加一。
这样,遍历结束后,我们就可以得到每个类别的字符数量。
5. 输出结果:最后,我们将统计结果输出。
这可以是一个列表、表格或者任何其他形式,取决于具体的需求。
下面是一个简单的Python代码示例,用于统计一个字符串中字母和数字的数量:
总结:
解题的关键在于对字符串进行适当的预处理,并定义清晰的字符类别。
通过遍历字符串并使用字典来记录每个类别的字符数量,我们可以快速得到统计结果。
最后,根据需求选择合适的输出形式。
汇编语言程序设计—字符与数据的显示
实验三汇编语言程序设计——字符与数据的操作(二)
一、实验目的:
1.掌握显示提示信息的方法及接收键盘输入信息的方法,完成字符串匹配程序。
2.掌握字符和数据的显示方法,完成字符和数据的显示程序。
3.了解小写字母和大写字母在计算机内的表示方法,并掌握如何进行转换,完成将键盘输入的小写字母转换成大写字母。
二、实验内容:
1. 编写程序,先显示信息“INPUT STRING ,THE END FLAG IS $”,再接收字符。
如为非数字字符即非“0——9”,则计数器加1,并显示字符。
如为数字,则直接显示,但不计数。
2.编写程序,接收键盘字符(以^-C为结束),并将其中的大写字母转变为小写字母,然后进行显示。
三、实验原理
1.DB、 DUP、 EQU等伪指令的功能以及使用格式;INT 21H 的09H子功能的功能、工作情况以及使用格式;INT 21H的0AH子功能的功能、工作情况以及使用格式;串扫描指令SCASB的功能以及使用格式;入栈、出栈指令PUSH 、POP的使用情况。
2.程序跳转指令JMP的功能及用法;比较指令CMP 、JB、 JBE 等指令的功能及用法;循环移位指令ROL的用法及功能;逻辑指令AND的功能及用法。
3.比较指令JA的功能及用法;减法指令SUB的功能及用法。
四、程序框图
五、实验步骤
1.按实验要求编写程序
2.汇编连接程序生成可执行文件 3.执行程序观察结果。
计算各类型字符个数有一篇文章共有3行文字每行小于80个字符要求分别统计出其
计算各类型字符个数有一篇文章共有3行文字每行小于80个字符要求分别统计出其各类型字符的个数,包括字母、数字、空格和其他字符。
首先,我们需要获得文章的文本内容。
我们假设文章的内容如下:```This is a sample text.```然后,我们可以按照以下步骤计算各类型字符的个数:1.定义一个字母计数器,初始值为0。
2.定义一个数字计数器,初始值为0。
3.定义一个空格计数器,初始值为0。
4.定义一个其他字符计数器,初始值为0。
5.对于每一行文字:-遍历每个字符。
-如果字符是字母,则字母计数器加1-如果字符是数字,则数字计数器加1-如果字符是空格,则空格计数器加1-如果字符既不是字母也不是数字也不是空格,则其他字符计数器加16.输出字母计数器、数字计数器、空格计数器和其他字符计数器的值。
根据以上步骤,我们可以使用Python实现如下代码:```pythontext = '''This is a sample text.letter_count = 0number_count = 0space_count = 0other_count = 0for line in text.split('\n'):for char in line:if char.isalpha(: # 判断字符是否是字母letter_count += 1elif char.isdigit(: # 判断字符是否是数字number_count += 1elif char.isspace(: # 判断字符是否是空格space_count += 1else:other_count += 1print("字母个数:", letter_count)print("数字个数:", number_count)print("空格个数:", space_count)print("其他字符个数:", other_count)```运行以上代码,输出结果如下:```字母个数:17数字个数:10空格个数:3其他字符个数:9```所以,根据给定的文章内容,字母个数为17,数字个数为10,空格个数为3,其他字符个数为9。
字符串统计数字字符个数
字符串统计数字字符个数
数字在我们生活中无处不在,无论是电话号码、银行账户、还是社交媒体上的粉丝数量,数字都扮演着重要的角色。
在我们的日常交流中,数字字符也是不可或缺的一部分。
那么,让我们来探讨一下数字字符在字符串中的重要性吧。
首先,让我们来统计一下字符串中数字字符的个数。
数字字符包括0到9这10个字符,我们可以通过遍历字符串的每个字符,然后判断是否为数字字符来实现统计。
在计算机编程中,这是一项基本的操作,可以帮助我们处理各种数据。
数字字符的个数不仅仅是一个抽象的概念,它还可以帮助我们分析数据的特征。
比如,在处理文本数据时,我们可以通过统计数字字符的个数来分析文本中的数字信息,这对于金融、医疗等领域的数据处理非常重要。
此外,数字字符的个数还可以帮助我们验证数据的有效性。
在输入身份证号、银行卡号等信息时,我们可以通过统计数字字符的个数来验证输入的信息是否符合规范,从而提高数据的准确性和安全性。
总的来说,数字字符在字符串中的个数不仅仅是一个简单的统计问题,它还涉及到数据分析、数据验证等多个方面。
因此,我们应该重视数字字符在字符串中的重要性,善于运用它们来处理和分析各种数据。
希望大家在日常生活和工作中都能充分利用数字字符的统计信息,让数据处理更加高效和准确。
微机原理实验统计字母数字个数
微机原理与接口技术软件实验一姓名:常艳洁班级:电0904-1班学号:20092260一:实验内容在数据区定义字母数字串,分别统计数字、大写字母、小写字母的个数,分别存放在SHUZI、DAXIE 、XIAOXIE单元中。
多次统计,记录统计结果。
二:实验要求在熟悉wave6000编程环境的基础上,完成上述源程序的输入、汇编、修改、运行等实验步骤,直到程序执行得到正确结果为止。
熟练掌握单步运行、断点设置、自动运行、寄存器内容,数据区内容查看等程序调试技术。
三:源程序DATA SEGMENTSTRIN DB 'abcdAD258a;;'COUNT EQU $-STRINORG 20HSHUZI DB ?DAXIE DB ?XIAOXIE DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, DATAMOV DS, AXXOR AX, AXMOV SHUZI, ALMOV DAXIE, ALMOV XIAOXIE, ALLEA SI, STRIN; 取偏移地址MOV CX, COUNTCLD;NEXT: LODSBCMP AL, 30HJB OTHER ;小于CMP AL, 39HJA BIJIAO1;大于INC SHUZIJMP OTHER; 段间直接转移/LOOP NEXTBIJIAO1: CMP AL, 'A'JB OTHERCMP AL, 'Z'JA BIJIAO2INC DAXIEJMP OTHERBIJIAO2: CMP AL, 'a'JB OTHERCMP AL, 'z'JA OTHERINC XIAOXIEOTHER: LOOP NEXTMOV AH, 4CHINT 21HCODE ENDSEND START四:实验结果五:实验总结通过本次实验熟练的掌握了wave6000的调试技术,并对一些细节性知识点有了进一步的认识和了解。
汇编语言程序设计实验报告
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。
e) 使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。
c语言字符个数统计长字符串中不同字符数 -回复
c语言字符个数统计长字符串中不同字符数-回复问题的解决过程。
首先,我们需要理解题目的要求。
题目要求我们使用C语言编写一个程序,统计长字符串中不同字符的个数。
具体来说,我们需要计算出给定长字符串中所有出现过的字符的个数。
在解决这个问题之前,我们需要对C语言的基本知识有一定的了解。
首先,C语言中的字符类型是char,在内存中占用1个字节。
C语言中可以使用一维数组来存储字符串,数组的每个元素都是一个字符。
接下来,我们需要思考如何统计长字符串中不同字符的个数。
一种简单的方法是使用一个额外的数组来标记已经出现的字符。
我们可以定义一个布尔类型的一维数组,数组的长度与字符的取值范围相同,例如ASCII码中,字符的取值范围是0到255。
数组的初始值都设置为false,表示字符还没有出现过。
然后,我们可以遍历长字符串中的每个字符,将已经出现的字符在数组中的值设为true。
最后,我们再遍历一遍布尔数组,统计值为true的元素个数,即为不同字符的个数。
下面是具体的实现步骤:1. 首先,我们需要定义一个函数,该函数用于统计长字符串中不同字符的个数。
我们可以将函数命名为countDistinctChar,函数的返回值为整型,表示不同字符的个数。
函数的参数为长字符串,类型为字符指针。
2. 在函数内部,我们首先定义一个布尔类型的一维数组,该数组长度为字符的取值范围(例如ASCII码中的字符范围为0到255),数组的元素类型为bool,表示字符是否已经出现过。
数组的初始值都设置为false。
3. 然后,我们使用一个循环遍历长字符串中的每个字符。
遍历的条件是字符不等于字符串结束符\0,因为在C语言中,字符串以\0结尾。
4. 在循环中,我们首先获取当前字符的ASCII码值,然后将布尔数组中对应位置的元素设为true。
ASCII码值减去字符范围的最小值,可以得到对应位置在布尔数组中的下标。
5. 循环结束后,我们定义一个整型变量count,用于统计值为true的元素个数,初始值为0。
汇编程序:统计一个字符串里数字的个数(初级版)
汇编程序:统计一个字符串里数字的个数(初级版)DATAS SEGMENTsum db 2 dup(?);此处输入数据段代码string db 25 dup(?);存放字符tital db 'This program is made by wq. ',0dh,0ahdb 'PLease input the string: ','$'overs db 'Amout of the nember is : ','$'DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov ax,offset titalmov dx,axmov ah,09hint 21hmov cl,25mov si,0mov ax,offset stringmov dx,axagain: ;输入字符mov ah,01hint 21hcmp al,0dhjz thenmov string[si],al inc sidec cljnz againthen:mov ax,offset string mov dx,axmov si,0mov bl,0mov cx,6 exchang:cmp cx,0jz overcmp string[si],30h jnb nextinc sidec cxjmp exchang next:cmp string[si],39h jle calculatorinc sidec cxjmp exchang calculator:inc siinc bldec cxjmp exchang over:lea ax,oversmov dx,axmov ah,09hint 21hmov ax,offset sum mov dx,axmov sum[0],bladd sum[0],30hmov sum[1],'$'mov ax,offset sum mov dx,axmov ah,09hint 21hMOV AH,4CHINT 21HCODES ENDSEND START这里是本程序的完善版:。
微机原理课程设计--字符串分类统计
微机原理课程设计报告题目:字符串分类统计学生姓名:***学号:32专业班级:计0601同组姓名: 赵晏龙陈顺指导教师:***设计时间:2010.1.4-2010.1.10 指导老师意见:评定成绩: 签名: 日期:目录一、需求分析 ...................................................................................... 错误!未指定书签。
二、系统设计 ...................................................................................... 错误!未指定书签。
1. 内容 ............................................................................................. 错误!未指定书签。
2.思路............................................................................................ 错误!未指定书签。
三、系统总体框图.......................................................................... 错误!未指定书签。
四、调试分析 ...................................................................................... 错误!未指定书签。
五、实验结果 ...................................................................................... 错误!未指定书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
五、调试结果。