您的位置:首页 > 其它

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

2015-04-21 19:53 267 查看
程序要求:

  DATA中含一个变量,写一个INPUT方法实现从命令行输入一个数NUM(0<=NUM<=65535),用OUTPUT方法输出这个数。

目的:

  INPUT函数模板

  OUTPUT函数模板

代码实现:

;例题:DATA中含一个变量,写一个INPUT方法实现从命令行输入一个数,用OUTPUT方法输出这个数
STACK SEGMENT STACK 'STACK'
STAK DW 256 DUP(?)
STACK ENDS

DATA SEGMENT
NUM DW ?
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN PROC
START:  MOV AX,DATA
MOV DS,AX
XOR AX,AX  ;AX置0
CALL INPUT
CALL OUTPUT
MOV AH,4CH
INT 21H
MAIN ENDP

INPUT PROC  ;入口参数:无     出口参数:BX(因此不能超过65535)
PUSH AX
PUSH CX
PUSH DX
PUSH SI  ;保存乘数
XOR BX,BX
XOR CX,CX
XOR DX,DX
MOV SI,10
NEXT:   MOV AH,01
INT 21H        ;接收键盘的数字
CMP AL,0DH    ;判断是否是回车
JZ DONE     ;JZ:等于则跳转
CMP AL,'0'
JB ERROR1    ;JB:小于则跳转
CMP AL,'9'
JA ERROR1    ;JA:大于则跳转
SUB AL,30H    ;将ASCII码字符变为对应的数字
MOV CL,AL
MOV AX,BX
MUL SI
ADD AX,CX
MOV BX,AX
JMP NEXT     ;继续接收下一个数据
ERROR1: MOV BX,0FFFFH
JMP EXIT
DONE:   MOV DL,0AH
MOV AH,02
INT 21H        ;输出回车
MOV DL,0DH
MOV AH,02
INT 21H
EXIT:   POP SI
POP DX
POP CX
POP AX
RET        ;子程序返回
INPUT ENDP

OUTPUT PROC NEAR ;入口参数:BX       出口参数:无
PUSH AX        ;保护寄存器
PUSH BX
PUSH CX
PUSH DX
PUSH SI
MOV SI,10    ;SI中是除数
XOR CX,CX
MOV AX,BX    ;入口参数在BX中
NEXT1:  MOV DX,0    ;DX存放余数,清零
DIV SI        ;AX和DX组成的32位除以16位的SI,商保存在AX中,余数保存在DX中
PUSH DX
INC CX        ;CX++,CX记录有多少位
CMP AX,0
JNZ NEXT1    ;JNZ 不等于则跳转
OUTP:   POP DX        ;余数出栈
ADD DL,30H
MOV AH,2
INT 21H
LOOP    OUTP
POP SI        ;恢复寄存器
POP DX
POP CX
POP BX
POP AX
RET        ;子程序返回
OUTPUT ENDP
CODE ENDS
END START
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: