汇编语言编写一个程序

用键盘输入一个字符串,对非数值字符进行计数,并输出计算结果

有点着急,要是写的好可以加分啊 谢啦
我感觉代码太长了,能不能改一改让代码短一些啊 谢谢啦
顺便改一下:原题目是 输入一系列以‘$’结尾的字符,对非数值字符计数,并输出结果 谢了啊 写好后我会追加分的

;用键盘输入一个字符串,对非数值字符进行计数,并输出计算结果

;有点着急,要是写的好可以加分啊 谢啦
;
;标准COM文件格式

;用MASM5.0编译通过,以下是运行结果:
;
;E:\masm>COUNT
;
;INPUT A STRING: GERG5 5H\\
;TOTAL: 08
;E:\masm>

CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 100H
START:
JMP BEGIN
BUFF DB 100,0,100 DUP(0)
N DB 0
MESS DB 0DH,0AH,'INPUT A STRING: ',24H
MESS1 DB 0DH,0AH,'TOTAL: ',24H

BEGIN:
MOV AH,9
MOV DX,OFFSET MESS
INT 21H

MOV AH,0AH ;输入字符串
MOV DX,OFFSET BUFF
INT 21H
MOV BX,OFFSET BUFF+1
MOV CH,0
MOV CL,[BX]
MOV BX,OFFSET BUFF+2
L0:
MOV AL,[BX]
CMP AL,'0'
JL NO09
CMP AL,'9'
JG NO09
JMP BE09
NO09:
INC N ;非0-9,N+1
BE09:
INC BX
LOOP L0
MOV AH,9
MOV DX,OFFSET MESS1
INT 21H

MOV AL,N
MOV AH,0
MOV BL,10 ;
DIV BL ;N/10 ,个位在AH中,10位在AL中
ADD AX,3030H ;转换为ASCII码
PUSH AX
MOV AH,02
MOV DL,AL
INT 21H ;显示10位
POP DX
MOV DL,DH
INT 21H ;显示个位
INT 20H

CODE ENDS
END START
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-29
DATA SEGMENT
STR DB 80 (' ')
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CL,0
LEA BX,STR
INPUT:
MOV AH,01H
INT 21H
MOV [BX],AL
INC BX
CMP AL,'$'
JNZ INPUT
MOV BX,OFFSET STR
NEXT:
MOV AL,[BX]
INC BX
CMP AL,'$'
JE DISP
CMP AL,30H
JB COUNT
CMP AL,39H
JA COUNT
JMP NEXT
COUNT:
INC CL
JMP NEXT
DISP:
MOV AL,CL
MOV BL,CL
MOV CL,4
SHR AL,CL
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV DL,BL
AND DL,0FH
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
mov ah,01h
int 21h
MOV AH,4CH
INT 21H
CODE ENDS
END START

用汇编语言编写一个程序
使用汇编语言编写程序实现用户登录功能,包含用户名和密码输入与验证。程序通过结构类型定义用户名和密码信息,并实现输出、获取光标位置、设置光标位置、窗口上滚、输入密码以及用户输入错误处理等功能。主要步骤包括初始化环境、输入用户名、验证用户名、输入密码、验证密码、显示欢迎信息和结束程序。程序首先初始...

用汇编语言写一个LCD1602驱动显示程序
在使用汇编语言编写LCD1602驱动显示程序时,首先定义了处理器的震荡频率和堆栈指针位置,为后续操作做准备。接着,初始化了控制端口,将P4、P5、P0、P1、P2、P3、P4M1、P4M0、P5M1、P5M0、P6M1、P6M0、P7M1、P7M0等端口设置为准双向口。同时,配置了控制信号端口P_HC595_SER、P_HC595_RCLK和P_HC...

编一个给小学生出两位数乘法运算题程序;用汇编语言编写,急需……
程序采用汇编语言编写,使用8086架构。程序运行流程如下:1. 显示提示,要求输入第一个数,等待用户输入。2. 显示提示,要求输入第二个数,等待用户输入。3. 对输入的数进行处理,计算乘积。4. 显示计算结果。程序中包含输入处理逻辑,能够验证用户输入的合法性。如果输入错误,程序会提示用户重新输入。最...

用汇编语言怎么编写跑马灯程序?
跑马灯程序用汇编是很好实现的,只要用好循环移位指令就可以,以下是程序。\\x0d\\x0aORG 0000H\\x0d\\x0aLJMP MAIN\\x0d\\x0aORG 0030H\\x0d\\x0aMAIN:\\x0d\\x0a MOV A,#0FEH\\x0d\\x0a\\x0d\\x0aLOOP:\\x0d\\x0a MOV P1,A ;将控制字送端口\\x0d\\x0a\\x0d\\x0a ...

【微机原理】1.汇编语言程序设计(1)
基础定义: 在汇编语言中,我们使用DW(字)来定义数据,如B DW 04H,它表示双字节数据,偏移地址根据前面的存储位置(如A,一个双字节)进行计算。程序结构: 汇编程序由数据段、代码段划分,通过段寄存器如CS、DS、SS来指定内存地址。数据段如DATA SEGMENT,用于存储变量。指令运作: 汇编指令如ADD AX,...

如何用Keil编写汇编语言程序?
1、打开Keil,新建一个51工程,同时新建一个main.c文件,并加入到工程源代码当中。2、再点击新建文件按钮,新建一个汇编语言源文件:test.asm,并将它保存到指定目录。3、在test.asm当中输入下面的代码。4、代码编写完成后,需要将test.asm加入到工程当中,即鼠标右键点击对应工程的源程序文件夹,选择“...

汇编语言编制程序,实现从1加到100
最简短的完整程序:CODE SEGMENT ASSUME CS:CODE START:;--- MOV AX, 0 MOV CX, 100 S: ADD AX, CX LOOP S ;---基本的,就上面四行--- MOV AH, 4CH INT 21H CODE ENDS END START

汇编语言 编写一个程序,将AL寄存器中的一位十六进制数转化成ASCII码...
;程序如下:ASSUME CS:CODE CODE SEGMENT START:MOV AL, 0FH ;在这里可写 00H~0FH,这就是一位16进制数 AND AL, 0FH ;无用位清零,保留该数字 ;下面是变成ASCII码 CMP AL, 0AH JB NEXT ADD AL, 07H NEXT:ADD AL, 30H ;下面是显示输出 MOV DL, AL ;送到DL MOV ...

用汇编语言! 编一程序把键入的十六进制数转化 成十进制数。
编一程序把键入的十六进制数,转化成十进制数,并在屏幕上显示。键入的十六进制数,不限位数。如超出四位,只将最后四位做转换并显示。若键入非十六进制数,则不予显示,等待继续输入。键入回车符,结束输入。程序如下:

汇编语言编写的程序必须要翻译
举个例子,如果程序员在汇编语言中编写了一条指令,比如“MOV AX, BX”,这条指令在汇编后会被转换成对应的机器代码。当这个机器代码被加载到CPU中执行时,它会指示CPU将BX寄存器中的内容移动到AX寄存器中。这个过程就是汇编语言程序必须被翻译成机器代码才能执行的原因。简而言之,汇编语言...

相似回答
大家正在搜