标签:
程序要求:
DATA中含一个变量,写一个INPUT方法实现从命令行输入一个数NUM(0<=NUM<=65535),用OUTPUT方法输出这个数。
目的:
INPUT函数模板
OUTPUT函数模板
代码实现:
1 ;例题:DATA中含一个变量,写一个INPUT方法实现从命令行输入一个数,用OUTPUT方法输出这个数 2 STACK SEGMENT STACK ‘STACK‘ 3 STAK DW 256 DUP(?) 4 STACK ENDS 5 6 DATA SEGMENT 7 NUM DW ? 8 DATA ENDS 9 10 CODE SEGMENT 11 ASSUME CS:CODE,DS:DATA,SS:STACK 12 MAIN PROC 13 START: MOV AX,DATA 14 MOV DS,AX 15 XOR AX,AX ;AX置0 16 CALL INPUT 17 CALL OUTPUT 18 MOV AH,4CH 19 INT 21H 20 MAIN ENDP 21 22 INPUT PROC ;入口参数:无 出口参数:BX(因此不能超过65535) 23 PUSH AX 24 PUSH CX 25 PUSH DX 26 PUSH SI ;保存乘数 27 XOR BX,BX 28 XOR CX,CX 29 XOR DX,DX 30 MOV SI,10 31 NEXT: MOV AH,01 32 INT 21H ;接收键盘的数字 33 CMP AL,0DH ;判断是否是回车 34 JZ DONE ;JZ:等于则跳转 35 CMP AL,‘0‘ 36 JB ERROR1 ;JB:小于则跳转 37 CMP AL,‘9‘ 38 JA ERROR1 ;JA:大于则跳转 39 SUB AL,30H ;将ASCII码字符变为对应的数字 40 MOV CL,AL 41 MOV AX,BX 42 MUL SI 43 ADD AX,CX 44 MOV BX,AX 45 JMP NEXT ;继续接收下一个数据 46 ERROR1: MOV BX,0FFFFH 47 JMP EXIT 48 DONE: MOV DL,0AH 49 MOV AH,02 50 INT 21H ;输出回车 51 MOV DL,0DH 52 MOV AH,02 53 INT 21H 54 EXIT: POP SI 55 POP DX 56 POP CX 57 POP AX 58 RET ;子程序返回 59 INPUT ENDP 60 61 OUTPUT PROC NEAR ;入口参数:BX 出口参数:无 62 PUSH AX ;保护寄存器 63 PUSH BX 64 PUSH CX 65 PUSH DX 66 PUSH SI 67 MOV SI,10 ;SI中是除数 68 XOR CX,CX 69 MOV AX,BX ;入口参数在BX中 70 NEXT1: MOV DX,0 ;DX存放余数,清零 71 DIV SI ;AX和DX组成的32位除以16位的SI,商保存在AX中,余数保存在DX中 72 PUSH DX 73 INC CX ;CX++,CX记录有多少位 74 CMP AX,0 75 JNZ NEXT1 ;JNZ 不等于则跳转 76 OUTP: POP DX ;余数出栈 77 ADD DL,30H 78 MOV AH,2 79 INT 21H 80 LOOP OUTP 81 POP SI ;恢复寄存器 82 POP DX 83 POP CX 84 POP BX 85 POP AX 86 RET ;子程序返回 87 OUTPUT ENDP 88 CODE ENDS 89 END START
标签:
原文地址:http://www.cnblogs.com/ruo-yu/p/4445293.html