资源描述
本科实验报告
实验名称: 分支和循环实验
课程名称:
CPU与汇编语言和选修实验
实验时间:
2017.10.24
任课教师:
高平
实验地点:
10-102
实验教师:
高平
实验类型:
█ 原理验证
□ 综合设计
□ 自主创新
学生姓名:
xx
学号/班级:
xx
组 号:
学 院:
信息与电子学院
同组搭档:
专 业:
信号与信息处理
成 绩:
一、 实验目的
1) 掌握比较指令;
2) 理解条件转移和无条件转移指令的区别;
3) 掌握单分支、双分支、多分支的程序设计方法;
4) 掌握循环程序设计方法。
二、 实验内容
内容一
程序代码:
DATAS SEGMENT
BUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH
COUNT EQU $-BUF
NUM1 DB 0
NUM2 DB 0
BUF1 DB 00,00
BUF2 DB 00,00
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,COUNT
MOV SI,0
MOV DI,0
L:
MOV AL,BUF[SI]
CMP AL,0
JG L1
INC NUM2
CBW
ADC WORD PTR BUF2[DI],AX
JMP L2
L1:
INC NUM1
CBW
ADC WORD PTR BUF1[DI],AX
L2:
INC SI
LOOP L
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序运行结果:
和
个数
正数
0202
7
负数
FF12
3
内容二
实验代码:
DATAS SEGMENT
BUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH
COUNT EQU $-BUF
MAX DB 0
MIN DB 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,COUNT
MOV SI,0
MOV AL,BUF[SI]
MOV MAX,AL
L:
INC SI
MOV AL,BUF[SI]
CMP AL,MAX
JL L1
MOV MAX,AL
L1:
DEC CX
JNZ L
MOV CX,COUNT
MOV SI,0
MOV AL,BUF[SI]
MOV MIN,AL
M:
INC SI
MOV AL,BUF[SI]
CMP AL,MIN
JA M1
MOV MIN,AL
M1:
DEC CX
JNZ M
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序运行结果:
所以可得有符号数的最大值为78H,无符号数的最小值12H。
内容三
实验代码:
DATAS SEGMENT
BUF1 DB 'CHAR',0DH,0AH,'$'
BUF2 DB 'char',0DH,0AH,'$'
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,1H
INT 21H
CMP AL,39H
JLE L1
CMP AL,5AH
JLE L2
LEA DX, BUF2
MOV AH,09H
INT 21H
JMP L
L1:
MOV DL,AL
MOV AH,2
INT 21H
JMP L
L2:
LEA DX, BUF1
MOV AH,09H
INT 21H
JMP L
L:
MOV AH,4CH
INT 21H
CODES ENDS
END START
代码运行结果:
输入数字5时输出5
输入大写字符Q时输出CHAR
输入小写字符q时输出char
内容四
实验代码:
DATAS SEGMENT
BUF DB 12H,98H,0H,64H,51H,46H,62H,0H,0ACH,0AFH
COUNT EQU $-BUF
A1 DB 0
A2 DB 0
A3 DB 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,COUNT
MOV SI,0
L:
MOV AL,BUF[SI]
CMP AL,0
JGE L1
INC A2
JMP L2
L1:
CMP AL,0
JG L3
INC A3
JMP L2
L3:
INC A1
L2:
INC SI
LOOP L
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序运行结果:
自定义的BUF缓存区中分别有正数5个,负数3个,零2个。
展开阅读全文