北京理工大学总汇编实验报告材料实验四
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告实验名称:分支和循环实验
一、实验目的
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
程序运行结果:
内容二
实验代码:
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个。