1. 写出完整程序,把一个字符串中的所有小写字母改为相应的大写字母,该字符串以‘$’结尾。该字符串定义如下: DATA SEGMENT STR DB ‘HELLO,everybody!$’ DATA ENDS2. 已知有一个首地址为BUF的数组,编写完整程序,计算数组中所有数值的和,并存放在TOTAL单元中,数据段定义如下: DATA SEGMENT BUF DW 56,47, 92,123,-45, 6, 87, -25, 31,19TOTAL DW ? DATA ENDS
时间: 2024-02-10 14:12:03 浏览: 74
1. 以下是一个将字符串中所有小写字母转换为大写字母的程序:
```
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
STR DB 'HELLO,everybody!$'
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
LEA SI, STR ; SI指向字符串的第一个字符
UPPERCASE:
MOV AL, [SI] ; 将当前字符存储在AL寄存器中
CMP AL, 'a' ; 如果当前字符是小写字母
JB NEXT ; 则跳转到下一个字符
CMP AL, 'z' ; 如果当前字符是小写字母
JA NEXT ; 则跳转到下一个字符
SUB AL, 32 ; 转换为大写字母
MOV [SI], AL ; 将转换后的字符存储回字符串中
NEXT:
INC SI ; 指向下一个字符
CMP BYTE PTR [SI], '$' ; 如果到达字符串末尾
JE EXIT ; 则跳转到程序结束
JMP UPPERCASE ; 继续处理下一个字符
EXIT:
MOV AH, 4CH ; DOS退出调用
INT 21H
CODE ENDS
END START
```
2. 以下是一个计算数组中所有值的和的程序:
```
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
BUF DW 56, 47, 92, 123, -45, 6, 87, -25, 31, 19
TOTAL DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV CX, 10 ; 数组中有10个值
MOV BX, 0 ; 初始值为0
LEA SI, BUF ; SI指向数组的第一个元素
SUM:
ADD BX, [SI] ; 将当前元素的值添加到总和中
ADD SI, 2 ; 指向下一个元素
LOOP SUM ; 继续处理下一个元素
MOV AX, BX ; 将总和存储在AX寄存器中
MOV [TOTAL], AX ; 将总和存储在TOTAL单元中
MOV AH, 4CH ; DOS退出调用
INT 21H
CODE ENDS
END START
```
阅读全文