02_汇编语言(子程序设计01_基本输入输出函数模板)

程序要求:

  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

 

转载于:https://www.cnblogs.com/ruo-yu/p/4445293.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值