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