《微机原理3.8程序举例PPT优秀课件》由会员分享,可在线阅读,更多相关《微机原理3.8程序举例PPT优秀课件(13页珍藏版)》请在金锄头文库上搜索。
1、汇编语言程序设计举例 (一)例、现有多个有符号数200、-12、45、78、500、-1000,编制程序,找出最大值,放至指定的MAX存储单元中。并把数据200、-12、45、78、500、-1000显示出来,编制程序。 设计数据段在数据段中给必要数据分配存储器单元 设计堆栈段若无堆栈指令或子程序或中断程序此段可略去 设计代码段实现要求功能程序设计步骤1代码段程序方框图初始化把第一个数据放入AX中AX=下一个数据?把此数据放入AX中修改存储器地址指针比较结束吗?把AX送入最大值单元NYNY2 DATA SEGMENT BUFFER DW 200,-12,45,500,-1000 COUNT E
2、QU ($-BUFFER)/2 MAX DW ? ;用于存放最大值 MES1 DB 200,-12,45,78,500,-1000,0AH,0DH,$ DATA ENDS STACK SEGMENT DB 64 DUP(?) TOP EQU $-STACK;计算出堆栈指针数值 STACK ENDS 3CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN:MOV AX,SEG DATA MOV DS,AX MOV AX,SEG STACK MOV SS,AX MOV SP,TOP MOV CX,COUNT LEA BX,BUFFER MOV AX,B
3、X INC BX INC BX DEC CXAGAIN:CMP AX,BX JGE NEXT MOV AX,BXNEXT:INC BX INC BX LOOP AGAIN MOV MAX,AX MOV AH,9 LEA DX,MES1 INT 21HQQ1: MOV AH,1 INT 16H JZ QQ1 MOV AH,4C INT 21HCODE ENDS END BEGIN ;显示字符串;等待有无任意键按下;返回DOS结束;大于等于转;初始化DS;初始化SP;初始化SS;比较;初始化指针;改变指针4(二)统计字符串长度 假设某字符串为abcduvwxyz,以回车符(CR odh)结束,从头
4、搜索字符串,统计字符串字符的个数,并在显示器上显示出串长(以16进制显示) 指令:SCASB功能:AL-(DI)或AX-(DI) 只反映标志位,结果不送回,自动修改 DI指针 5 设计数据段在数据段中给必要数据分配存储器单元 设计堆栈段若无堆栈指令或子程序或中断程序此段可略去 设计代码段实现要求功能程序设计步骤6置串指针置串长度的初值为0取串元素=CR?串长度加1把串长度的高4位转换成ASCII码并显示 返回YN代码段程序框图显示符号H存串长度把串长度的低4位转换成ASCII码并显示7十六进制转换成ASCII子程序框图假设一位十六进制数已放在AL的8位中AL10? AL+37HAL AL+30
5、HAL 返回RETYN8汇编程序如下: ;name length_of_string and displayDATASEGMENTSTRINGDBabcduvwxyz,0DHL1 DB?CR EQU 0DHDATAENDSSTACK SEGMENT PARA STACK STACKS1 DB 100 DUP(?)STACK ENDSCODESEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK9BEGIN: MOVE AX,DATA MOV DS,AX MOV ES,AX LEA DI,STRING ;设串的地址指针 MOV,DL,0 ;置串长度的初值为
6、0 MOV AL,CR ;串标志送入AL CLD ;清DF=0,使地址自动 增量AGAIN: SCASB ;搜索串10 JE DONE ;找到结束标志,停止 INC DL ;串长度加1 JMP AGAINDONE: LEA BX,L1 MOV BX,DL ;存串长度 MOV DH,DL ;串长暂存 MOV CL,4 SHR DL,CL ;取串长高4位 MOV AL,DL CALL CHANGE ;将高4位转换成ASCII码放入AL MOV DL,AL MOV AH,2 INT 21H ;显示高4位 11 MOV AL,DH ;取暂存串长 AND AL,0FH ;取串长低4位 CALL CHANGE MOV DL,AL MOV AH,2 INT 21H ;显示串长低位 MOV DL,H MOV AH,2 INT 21H ;显示H MOV AH,4CH INT 21H CHANGE PROC ;过程或子程序 CMP AL,10 JL ADD30 ;小于转 ADD AL,37H JMP P1ADD30:ADD AL,30H P1:RETCHANGE ENDPCODE ENDS END BEGIN将二进制数转变成ASCII码子程序12个人观点供参考,欢迎讨论