当前位置:首页 > 微机原理:顺序、分支、循环、子程序设计
[公司名称]
实验二 顺序、分支、循环、子程序设计
微机原理上机实验
[作者姓名] [日期]
预习报告
零、相关知识
1,LEA指令和MOV指令的区别
一、顺序结构
计算m*n-w,最终结果保存在AX 其中m=12, n=12, w=4
最终结果为AX=008CH=140D
name \org 100h
MOV AX, 1000H MOV DS, AX MOV SI, 1000H MOV [SI], 12 MOV [SI+1], 12 MOV [SI+2], 4 MOV AL, [SI] MOV BL, [SI+1] MUL BL MOV BX, 0
MOV BL, [SI+2] SUB AX, BX HLT
二、分支结构
在DS数据段偏移地址为DATA开始的顺序80个单元中,存放着某班80个同学的微机原理考试成绩。现欲编程序统计>=90、89~70、69~60和<60分的人数,并将统计的结果存放在当前数据段偏移地址为BUFFER的顺序单元中
name “branch structure”
START:
MOV DX, 0000H MOV BX, 0000H MOV CX, 80 LEA SI, DATA LEA DI, BUFFER GOON:
MOV AL, [SI] CMP AL, 90 JC NEXT3 INC DH JMP STOR NEXT3:
CMP AL, 70 JC NEXT5 INC DL JMP STOR NEXT5:
CMP AL, 60 JC NEXT7 INC BH JMP STOR NEXT7: INC BL STOR: INC SI
LOOP GOON MOV [DI], DH MOV [DI+1], DL MOV [DI+2], BH MOV [DI+3], BL HLT
三、循环结构
在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。现欲编程序将这100个数按大小顺序排序(以下程序使用的是快速排序算法,也可以使用冒泡排序,嵌套两层循环)
name “circle structure” LEA DI, BUFFER MOV BL, 99 NEXT0:
MOV SI, DI
MOV CL, BL NEXT3:
MOV AX, [SI] ADD, SI, 2 CMP AX, [SI] JNC NEXT 5 MOV DX, [SI] MOV [SI-2], DX MOV [SI], AX NEXT5: DEC CL JNZ NEXT3 DEC BL JNZ NEXT0 HLT
四、子程序
编写程序,完成将一组BCD数转换成16位二进制数。(BCD数转换成16位二进制数用子程序实现)
下面提供三种方案,分别用寄存器、储存器和堆栈传递参数
①使用寄存器传递参数
name \STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS
DATA SEGMENT
BCD1 DB 07H, 06H, 07H, 02H, 03H LENG1 DB 5 RESULT DW ? DATA ENDS
CODEM SEGMENT
ASSUME CS:CODEM, DS:DATA, SS:STACK START:
MOV AX, DATA MOV DS, AX LEA SI, BCD1 MOV CX, LENG1
CALL FAR PTR BCD-16B MOV RESULT, DX MOV AH, 4CH
共分享92篇相关文档