2、键盘输入小写字母,显示器显示大写字母 1)实验程序: CSEG SEGMENT ASSUME CS:CSEG MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX BEGIN: MOV AH,1 INT 21H CMP AL,'a' JB STOP CMP AL,'z' JA STOP SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP BEGIN STOP: RET MAIN ENDP CSEG ENDS END START 2) 实验步骤: (1)建立源程序文件。
(2)用MASM宏汇编程序和LINK连接程序生成执行程序。 (3)运行执行程序,输入不同字母,观察结果。
26
3、从键盘输入一个二位十进制的月份数(01-12),显示相应月份的英文缩写名
1)程序及其结构
程序采用子程序的结构形式,子程序有:将输入的二位月份数转换为二进制数的子程序;从字符表中查找相应的英文缩写的子程序;将月份的英文字母显示在屏幕上的子程序。 %程序运行存在问题,只要第一个数字不为0,则当输入的第二个数字为1或2时就会对应输出NOV和DEC 程序如下:
DATASG SEGMENT PARA 'DATA' THREE DB 3 MONIN DB 3, 4 DUP(?) ALFMON DB '???','$' MONTAB DB 'JAN','FEB','MAR','APR','MAY','JUN' DB 'JUL','AUG','SEP','OCT','NOV','DEC' DATASG ENDS
STACK SEGMENT PARA STACK 'STACK' STA DB 100 DUP(?) STACK ENDS
CODESG SEGMENT PARA 'CODE' ASSUME CS:CODESG,DS:DATASG,ES:STACK MAIN PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DATASG MOV DS,AX
27
MOV ES,AX CALL INPUT CALL LOCATE CALL DISPLAY RET MAIN ENDP
INPUT PROC NEAR ; 键盘输入并将ASCⅡ码转换二进制数的子程序 PUSH DX MOV AH,0AH ; 键盘输入月份数 LEA DX,MONIN INT 21H MOV AH,MONIN+2 ; 将月份数字的ASCⅡ码取入AH和AL MOV AL,MONIN+3 XOR AX,3030H ; 将ASCⅡ码转换为BCD码 CMP AH,00 JZ RETURN SUB AH, AH ADD AL,10 RETURN: POP DX RET INPUT ENDP
LOCATE PROC NEAR ; 将月份数字转换为英文缩写字母的子程序 PUSH SI PUSH DI PUSH CX LEA SI,MONTAB DEC AL MUL THREE ADD SI,AX MOV CX,03 CLD LEA DI,ALFMON REP MOVSB POP CX POP DI POP SI RET LOCATE ENDP DISPLAY PROC NEAR ; 屏幕显示子程序 PUSH DX LEA DX,ALFMON
28
MOV AH,09 INT 21H POP DX RET DISPLAY ENDP CODESG ENDS END MAIN
(二)采用DOS功能调用设计源程序,并运行调试程序
1、十进制加法和结果显示程序(自行设计) 1)程序设计要求
将数据段DSEG中的ADDOP1定义的双字变量的4位十进制数和附加段ESEG中的ADDOP2定义的双字变量的4位十进制数相加,和存放于数据段DSEG中的SUM中,采用DOS显示功能调用将和显示在屏幕上。
DSEG SEGMENT ADDOP1 DD 1234 SUM DD ? DSEG ENDS
ESEG SEGMENT ADDOP2 DD 2345 ESEG ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT ASSUME DS:DSEG,CS:CODE,ES:ESEG START: MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX MOV AX,WORD PTR ADDOP1
29
ADD AX,WORD PTR ADDOP2 MOV WORD PTR SUM,AX MOV AX,WORD PTR ADDOP1+2 ADC AX,WORD PTR ADDOP2+2 MOV WORD PTR SUM+2,AX MOV BX,WORD PTR SUM+2 CALL DISPLAY MOV BX,WORD PTR SUM CALL DISPLAY MOV AH,4CH INT 21H
DISPLAY PROC NEAR MOV CX,10000D ;DIVIDE BY 10000 CALL DEC_DIV MOV CX,1000D ;DIVIDE BY 1000 CALL DEC_DIV MOV CX,100D ;DIVIDE BY 100 CALL DEC_DIV MOV CX,10D ;DIVIDE BY 10 CALL DEC_DIV MOV CX,1D ;DIVIDE BY 1 CALL DEC_DIV RET ;RETURN FROM BINIDEC
DEC_DIV PROC NEAR ; ;--------从 位取出数字显示 MOV AX,BX ;NUMBER LOW HALF MOV DX,0 ;ZERO OUT HIGH HALF DIV CX ;DIVIDE BY CX MOV BX,DX ;REMAINDER INTO BX MOV DL,AL ;QUOTIENT INTO DL ;PRINT THE CONTENTS OF DL ON SCREEN ADD DL,30H ;CONVERT TO ASCII MOV AH,2H ; DISPLAY FUNCTION INT 21H ;CALL DOS RET ;RETURN FROM DEC_DIV DEC_DIV ENDP
;;------------------------------------------------------------------ DISPLAY ENDP
30
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库东华微机实验aaa(6)在线全文阅读。
相关推荐: