JNZ NEXT ;计数不为零,跳转执行 HLT
MAIN ENDP ;主程序结束 ;下面是子程序,实现屏幕显示转移次数功能
COUNT PROC NEAR ;定义子程序属性 NEXT2: NEXT3:
PUSH CX MOV DH,CH MOV BX,02H
MOV CL,4 ROL DH,CL MOV AL,DH AND AL,0FH CMP AL,09H JBE NEXT3 ADD AL,07H
ADD AL,30H MOV DL,AL
MOV AH,2 INT 21H DEC BX JNZ NEXT2
MOV DL,'H' MOV AH,2 INT 21H
MOV DL,0AH ;CX进栈
;将DH循环右移四位
;将AL高位清零 ;与09H比较大小 ;若小于,跳转至NEXT3 ;加30H ;DOS中断显示 ;显示H ;回车
第 16 页
MOV AH,2 INT 21H
MOV DL,0DH ;换行 MOV AH,2 INT 21H
POP CX ;CX出栈 RET COUNT ENDP ;子程序结束 CODE ENDS END START 实验结果
第 17 页
第 18 页
5、实验代码
DATA SEGMENT
INP DB 'PLEASE INPUT (a~z): ','$' ;设置字符串 OUP DB 'THE TRANSFORMATION(A~Z) IS:','$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX
MOV DX,OFFSET INP ;显示字符串,提示输入 MOV AH,9 INT 21H
MOV AH,1 ;DOS中断调用,从键盘中读取一个字符 INT 21H
PUSH AX ;AX入栈 PUSH DX
MOV DL,0DH ;中断调用,回车 MOV AH,2
INT 21H
MOV DL,0AH ;中断调用,换行 MOV AH,2
INT 21H
MOV DX,OFFSET OUP ;显示字符串,输出提示 MOV AH,9
第 19 页
INT 21H
POP DX ;DX出栈 POP AX ;AX出栈 SUB AL,32 ;AL减去32,使大写转化为小写 ;大小写之间的ASCII码值相差32
MOV DL,AL ;DOS中断显示结果 MOV AH,2 INT 21H MAIN ENDP CODE ENDS END START 实验结果:
第 20 页