
data segment
num1 db '1','2','3','4','5','6','7','8','9','1'
num2 db '8','1','6','5','4','3','2','1','0','8'
sum db 10 dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,10
mov si,0
next:
push cx
mov bx,offset num1
mov dl,[bx+si]
mov ah,02h
int 21h
mov dl,'+'
mov ah,02h
int 21h
mov bx,offset num2
mov dl,[bx+si]
mov ah,02h
int 21h
mov dl,'='
mov ah,02h
int 21h
mov bx,offset num1
mov dl,[bx+si]
mov bx,offset num2
add dl,[bx+si]
sub dl,30h
mov bx,offset sum
mov [sum+si],bl
mov ah,02h
int 21h
inc si
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
pop cx
loop next
mov ah,4ch
int 21h
code ends
end start
DATA1 SEGMENTNUM1 DB ?NUM2 DB ?SUMDB ?DATA1 ENDSCOSEG SEGMENT ASSUME CS:COSEG,DS:DATA1START: MOV AX,DATA1 MOV DS,AX MOV AH,01H 调用睁谨码一号键输悉哪入功能,输出参量保持在AL中. INT 21H MOV BL,AL MOV AH,01H 调用一号键输入功能,输出参量保持在AL中. INT 21H MOV NUM1,BL 为了方便查看数据段结果,晌老将输入的第一个数保存在NUM1中 MOV NUM2,AL 将输入的第2个数保存在NUM2中 ADD BL,AL MOV SUM,BL 将结果保存在SUM中MOV AH,4CH INT 21HCOSEG ENDS END START CODE SEGMENTASSUME CS:CODE
SUM DW 0
START: PUSH CS
POP DS
PUSH CS
POP ES
CALL INPUTNUM
CALL LFCR
LEA SI,ARRAY
MOV CX,NUM
CLD
@0:
LODSW
ADD SUM,AX
LOOP @0
MOV AX,SUM
CALL DSPAX
MOV AH,4CH
INT 21H
=========================================
LFCR PROC NEAR
PUSH AX
PUSH DX
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
RET
LFCR ENDP
===============================================
键盘输入数值数组子程序(数组名为array,元素个数存放在num中)
INPUTNUM PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
PUSHF
输入的数据以一个空格分隔,以回车符结束输入
LEA DI,CS:ARRAY
MOV WORD PTR CS:NUM,0
STIN:
MOV AX,0
PUSH AX
AGAIN1:
MOV AH,0CH
MOV AL,1
INT 21H
MOV BYTE PTR CS:CHAR,AL
CMP AL,13
JE LINE0
CMP AL,' '
JE LINE0
SUB AL,30H
MOV AH,0
MOV SI,AX
POP AX
MOV CL,10
MOV CH,0
MUL CX
ADD AX,SI
PUSH AX
JMP AGAIN1
LINE0:
POP AX
MOV WORD PTR CS:[DI],AX
INC WORD PTR CS:NUM
CMP BYTE PTR CS:CHAR,13
JE STINEND
INC DI
INC DI
JMP STIN
STINEND:
POPF
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
RET
ARRAY DW 200 DUP(0)
游配NUM DW 0
CHAR DB ?
INPUTNUM ENDP
======================================
DSPAXS PROC NEAR
PUSH AX
TEST AX,8000H
JNS @DSPAXS1
PUSH AX
PUSH DX
MOV AH,2
MOV DL,'-'
INT 21H
POP DX
POP AX
NEG AX
@DSPAXS1:
CALL DSPAX
POP 神纯指 AX
RET
DSPAXS ENDP
==================================
DSPAX PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSHF
XOR CX,CX
MOV BX,10
@DSPAX1:
XOR 裤好 DX,DX
DIV BX
INC CX
OR DX,30H
PUSH DX
CMP AX,0
JNE @DSPAX1
MOV AH,2
@DISPAX2:
POP DX
INT 21H
LOOP @DISPAX2
MOV DL,32
INT 21H
POPF
POP DX
POP CX
POP BX
POP AX
RET
DSPAX ENDP
==================================
CODE ENDS
END START
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)