实验二 汇编语言程序设计
1、实验目的及要求
实验目的:
①学习数据传送和算术运算指令的用法
②熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
实验仪器、设备或软件
实验设备:计算机
实验软件:Masm for Windows 集成实验环境 2015
实验要求:
若在一片内存储区中有一字符串,起始地址为STRING。字符串中有字母和数字两种符号,要求把其中的字母和数字符号分开,分别放在同一段的两个空间,存放字母的空间起始地址为ZIFU;存放数字符号的空间起始地址为SHUZI。
程序代码:
DATA SEGMENT
ORG 1000H
STRING DB ‘DIDEfe234fef38fj2jf9DE99af3FAE8E83F92fjIjEIFIFQ’
COUNT EQU
−
S
T
R
I
N
G
;
字
符
串
长
度
O
R
G
2000
H
Z
I
F
U
D
B
C
O
U
N
T
D
U
P
(
0
)
,
0
D
H
,
0
A
H
,
′
-STRING ; 字符串长度 ORG 2000H ZIFU DB COUNT DUP(0),0DH,0AH,'
−STRING;字符串长度ORG2000HZIFUDBCOUNTDUP(0),0DH,0AH,′’ ; 字母存放区
ORG 3000H
SHUZI DB COUNT DUP(0),0DH,0AH,’$’ ; 数字存放区
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:MOV AX,DATA
MOV DS,AX ;DS指向DATA
MOV ES,AX ;ES指向DATA
MOV SI,OFFSET STRING ; DS:SI指向原字符串
MOV BX,OFFSET ZIFU ; BX指向字母存放区
MOV DI,OFFSET SHUZI ; DI指向数字存放区
MOV CX, COUNT
CLD
LOP:LODSB ; 将原字符串中一个字节取至AL,且SI加1
CMP AL,30H ; 判断所取字节为数字符号吗?
JB LZIFU ; 不为数字符号时转字母处理
CMP AL,39H
JA LZIFU ; 不为数字符号时转字母处理
STOSB ; 是数字符号送数字区,且DI加1
JMP AGAIN
LZIFU:XCHG BX,DI ; 交换BX和DI,使DI指向字母字符区
STOSB ; 送字母到字母区,指针增加1
XCHG BX,DI ; BX,DI恢复原值
AGAIN: LOOP LOP ; 所有符号都处理了吗,没有则转LOP;否则,顺序执行
MOV DX,OFFSET ZIFU
MOV AH,9 ; 输出字母区
INT 21H
MOV DX,OFFSET SHUZI
INT 21H ; 输出数字区
MOV AH,4CH
INT 21H ; 返回DOS系统
CODE ENDS
END START
输出结果: