微机原理实验报告 下载本文

内容发布更新时间 : 2024/5/18 8:19:06星期一 下面是文章的全部内容请认真阅读。

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 实验结果: