发布时间 : 星期六 文章IBM-PC汇编语言程序设计实验报告更新完毕开始阅读
3.实验具体设计实现及结果
4.源代码
二进制转十六进制: PROGNAM SEGMENT MAIN PROC FAR
ASSUME CS:PROGNAM,DS:DATAS,SS:STACKS START:
PUSH DS SUB AX,AX PUSH AX
第 9 页 共 21 页
MOV CH,4
MOV BX,0101010011101001B ROTATE: MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7H PRINTIT:
MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RET MAIN ENDP PROGNAM ENDS END
冒泡排序: DSEG SEGMENT
SCORE DB 11H,02H,15H,32H,5H,6H,7H,8H,9H,10H,90 DUP(05H) MAX DB ? MIN DB ? DSEG ENDS CSEG SEGMENT
ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX
LEA BX,SCORE ;取数组的首地址 MOV CX,100 ;控制循环次数 XOR SI,SI ;将SI清零 XOR DI,DI ;将DI清零
L1: MOV AH,[BX+SI] ;用基变址寻址取操作数, L1为外循环,(SI)为循环变量,
;相当于i
L2: MOV AL,[BX+DI] ; L2为内循环,(DI)为循环变量,相当于j
CMP AH,AL
JAE L3
第 10 页 共 21 页
MOV DH,AH ;AH MOV [BX+DI],AL ;将交换后的数存入存储器 MOV [BX+SI],AH ;这两步很重要 L3: INC DI ;AH>=AL,不需交换,(AH)直接和后一个数比较,相当于j++ CMP DI,100 ;判断内层循环是否结束 JB L2 ;没结束,继续循环 ;内层循环结束了 INC SI ;外层变量SI加一,相当于i++ MOV DI,SI ;相当于j=i LOOP L1 ;通过寄存器实现两个存储器数据间的交换 MOV AH,BYTE PTR[BX] ;基址寻址 MOV AL,BYTE PTR[BX+99] MOV MAX,AH MOV MIN,AL MOV AH,4CH ;返回操作系统 INT 21H CSEG ENDS END START 汇编语言实验三 求Fibonacci递归数 1.实验目的与要求 【实验目的】 掌握子程序的设计方法,熟悉递归程序的设计 【实验要求】 掌握递归程序的调用、返回及入口、出口的传递方法 第 11 页 共 21 页 2.实验内容与实现原理 程序接受由用户键入的数N,根据给定的N值,计算Fibonacci数。 Fibonacci数的公式如下: Fib(1)=1;当n=1 Fib(2)=1;当n=2 Fib(n)=Fib(n-1)+Fib(n-2) 3.实验具体设计实现及结果 4.源代码 DATAS SEGMENT STR1 DB 'Please input a number(1-50):N=','$' STR2 DB 13,10,'FIB(N)=','$' WRONGSTR DB 13,10,13,10,'A number between 1 and 50 please!',13,10,13,10,'$' INPUTBUFFER DB 3,?,3 DUP(?) N DW ? ;输入N值 RESULT1H DW 0 RESULT1L DW 0 第 12 页 共 21 页