从BUF单元开始存有一字符串(长度< 255 ),用汇编语言编程实现统计该串字符中的ASCII码在 42H~45H之间的字符个数,并将统计结果以二进制形式显示在屏幕。
时间: 2024-02-06 08:11:51 浏览: 184
下面是使用汇编语言实现的代码:
```assembly
.MODEL SMALL
.STACK 100H
.DATA
STR DB 255 DUP('$')
COUNT DB ?
BUF DB 8 DUP('$')
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 读入字符串
LEA DX, STR
MOV AH, 0Ah
INT 21h
; 统计字符个数
MOV SI, OFFSET STR+1 ; 跳过字符串长度
MOV CX, BYTE PTR [STR+1] ; 获取字符串长度
XOR BL, BL
COUNT_LOOP:
MOV AL, [SI]
CMP AL, 42H
JB SKIP
CMP AL, 45H
JA SKIP
INC BL
SKIP:
INC SI
LOOP COUNT_LOOP
MOV COUNT, BL
; 将统计结果转换成二进制形式
MOV SI, OFFSET BUF+7
MOV AL, COUNT
BIN_LOOP:
MOV AH, 02h ; DOS中断,用于在屏幕上输出字符
AND AL, 00000001b
OR AL, 00110000b ; 将二进制数转换为ASCII码
MOV DL, AL
INT 21h
SHR AL, 1
DEC SI
CMP SI, OFFSET BUF
JAE BIN_LOOP
; 输出统计结果
LEA DX, COUNT_MSG
MOV AH, 09h ; DOS中断,用于在屏幕上输出字符串
INT 21h
; 退出程序
MOV AH, 4Ch ; DOS中断,用于退出程序
INT 21h
MAIN ENDP
COUNT_MSG DB '在42H~45H之间的字符个数为:$'
CR DB 0Dh, 0Ah, '$'
END MAIN
```
该程序使用DOS中断实现输入输出。首先读入一个字符串,然后遍历字符串的每个字符,如果该字符的ASCII码在42H~45H之间,则统计个数。最后将统计结果转换成二进制形式,并在屏幕上输出。需要注意的是,在汇编语言中,输出二进制形式需要进行位运算。
阅读全文