MOV CX,4; 接下来的程序是将数值转化为ASCII并在屏幕上显示 LEA SI,DNUM ;取DNUM的地址偏移量 NEXT4:
MOV AL,[SI] ;将DNUM中所存的各个数值转换为ASCII码; ;在屏幕上输出显示
CMP AL,09H JBE NEXT5
ADD AL,07H NEXT5:
ADD AL,30H MOV DL,AL MOV AH,2 INT 21H INC SI DEC CX JNZ NEXT4 CODE ENDS
END START实验结果
3、实验代码 DATA SEGMENT
OUP DB 'THE ASCII OF 7963 IS:','$' A1 DB 07H,09H,06H,03H DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX
MOV DX,OFFSET OUP MOV AH,09H INT 21H MOV CL,4 MOV SI,0 NEXT:
MOV AL,A1[SI] ;将A1的第SI个数据传给AL MOV BL,AL
OR AL,30H ;加30转换为ASCII码值 SHR AL,4
AND AL,0FH ;将右移后的高位清零
ADD AL,30H ;因为ASCII码与值之间相差30 MOV DL,AL
MOV AH,2 ;输出对应的ASCII码 INT 21H MOV AL,BL AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV DL,' ' MOV AH,02H INT 21H INC SI LOOP NEXT EXIT:
MOV AH,4CH INT 21H CODE ENDS END START 实验结果
4、实验代码
DATA SEGMENT
YI DB 100 DUP(88H)
ER DB 100 DUP(00H) ;定义数组 MES DB 'THE NUMBER OF COUNTER IS: ','$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX
MOV CL,100 ;计数器初值
MOV CH,00H ;转移次数统计,初值
LEA SI,YI ;将内存块1的偏移量给SI LEA DI,ER ;将内存块2的偏移量给DI NEXT: MOV AL,[SI]
MOV [DI],AL ;将YI中的数据复制到ER中 INC SI INC DI INC CH
MOV DX,OFFSET MES ;显示字符串 MOV AH,9 INT 21H
CALL COUNT ;调用子程序 DEC CL ;计数减1
JNZ NEXT ;计数不为零,跳转执行 HLT
MAIN ENDP ;主程序结束 ;下面是子程序,实现屏幕显示转移次数功能
COUNT PROC NEAR ;定义子程序属性 PUSH CX ;CX进栈 MOV DH,CH MOV BX,02H
NEXT2: MOV CL,4
ROL DH,CL ;将DH循环右移四位 MOV AL,DH
AND AL,0FH ;将AL高位清零 CMP AL,09H ;与09H比较大小
JBE NEXT3 ;若小于,跳转至NEXT3 ADD AL,07H
NEXT3: ADD AL,30H ;加30H MOV DL,AL
MOV AH,2 ;DOS中断显示 INT 21H DEC BX
JNZ NEXT2
MOV DL,'H' ;显示H MOV AH,2 INT 21H
MOV DL,0AH ;回车
MOV AH,2 INT 21H
MOV DL,0DH ;换行 MOV AH,2 INT 21H
POP CX ;CX出栈 RET COUNT ENDP ;子程序结束 CODE ENDS
END START 实验结果
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 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 实验结果: