二 实验环境 微型计算机一台
DOS或WINDOWS操作系统,MASM开发套件。 三 实验要求
1、掌握正确过程定义格式
过程名 PROC 属性
(过程体) RET
过程名 ENDP
2、掌握正确过程调用格式: CALL 过程名
段内调用:即过程和主程序在同一个代码段内,属性为NEAR 段间调用:即过程和主程序在不同的代码段,属性为FAR
四 实验内容
1、将BUF字节单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXASC实现,在转换过程中通过子程序DISP实现显示。
2、将BUF开始的2个字节单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXASC实现,在转换过程中通过子程序DISP实现显示。
3、将BUF开始的10个字节单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXASC实现,在转换过程中通过子程序DISP实现显示。 五 实验步骤
1、用EDIT编辑软件,编写.ASM源程序。 2、对其进行汇编及连接,产生.EXE文件。
3、在DOS下运行.EXE文件进行。 4、实验程序清单: 1)、内存单元一个数据显示: DATA SEGMENT BUF DB 100 DATA ENDS
STACK SEGMENT STACK DW 256H DUP(0) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR
START: MOV AX,DATA MOV DS,AX LEA BX,BUF
MOV AL,BYTE PTR[BX] CALL HEXASC MOV AH,4CH INT 21H RET HEXASC PROC NEAR
MOV CH,2 MOV BL,AL OK: MOV CL,4 ROL BL,CL MOV AL,BL AND AL,0FH CMP AL,9 JBE NEXT ADD AL,7 NEXT: ADD AL,30H MOV DL,AL CALL DISP DEC CH JNZ OK RET
DISP PROC NEAR MOV AH,2 INT 21H RET DISP ENDP HEXASC ENDP MAIN ENDP CODE ENDS
END START
2)、内存单元两个数据显示: DATA SEGMENT BUF DB 100,32 DATA ENDS
STACK SEGMENT STACK DW 256H DUP(0) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR
START: MOV AX,DATA MOV DS,AX MOV CH,2 LEA BX,BUF
AGAIN: MOV AL,BYTE PTR[BX] PUSH BX PUSH CX
CALL HEXASC POP CX
POP BX INC BX DEC CH JNZ AGAIN MOV AH,4CH INT 21H RET
HEXASC PROC NEAR MOV CH,2 MOV BL,AL OK: MOV CL,4 ROL BL,CL MOV AL,BL AND AL,0FH CMP AL,9 JBE NEXT ADD AL,7 NEXT: ADD AL,30H MOV DL,AL CALL DISP DEC CH JNZ OK RET
DISP PROC NEAR MOV AH,2 INT 21H RET DISP ENDP HEXASC ENDP MAIN ENDP CODE ENDS
END START 3)、内存单元10个数据显示: DATA SEGMENT
BUF DB 100,32,33,34,35,36 DB 37,38,39,40 DATA ENDS
STACK SEGMENT STACK DW 256H DUP(0) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
main proc far
START: MOV AX,DATA MOV DS,AX MOV CX,10
LEA BX,BUF
AGAIN: MOV AL,BYTE PTR[BX] PUSH BX PUSH CX CALL HEXASC POP CX POP BX INC BX LOOP AGAIN MOV AH,4CH INT 21H RET
HEXASC PROC NEAR MOV CH,2 MOV BL,AL OK: MOV CL,4 ROL BL,CL MOV AL,BL AND AL,0FH CMP AL,9 JBE NEXT ADD AL,7 NEXT: ADD AL,30H MOV DL,AL CALL DISP DEC CH JNZ OK RET
DISP PROC NEAR MOV AH,2 INT 21H RET DISP ENDP HEXASC ENDP MAIN ENDP CODE ENDS
END START