zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Python数据分析与机器学习-Pandas_1
    Python数据分析与机器学习-NumPy_5
    Python数据分析与机器学习-NumPy_3
    Python数据分析与机器学习-NumPy_4
    Python数据分析与机器学习-NumPy_2
    Python数据分析与机器学习-NumPy_1
    早起的鸟儿会摔倒
    我讨厌这样的自己
    依然很迷茫?
    孵客总结
  • 原文地址:https://www.cnblogs.com/ruo-yu/p/4445293.html
Copyright © 2011-2022 走看看