2、在内存0000:0200-0000:023F区间产生3F,3E,3D等规律的数据,求和并输出 。

题目描述

2、在内存0000:0200-0000:023F区间产生3F,3E,3D等规律的数据,求和并输出 。

参考程序

ASSUME CS:CODESEG, SS:STACK, DS:DATA
DATA SEGMENT
DATA ENDS
STACK SEGMENT PARA STACK
	BUF DW 20H DUP (0)
	LEN EQU $-BUF
STACK ENDS
CODESEG SEGMENT

START:
	MOV AX,0000
	MOV DS,AX
	MOV AX,STACK
	MOV SS,AX
	MOV SP,LEN
;0000:0200-0000:023F
	MOV BX,0
	MOV CX,40H
	MOV AL,3FH
	MOV SI,0200H
	MOV DH,0

L1:
	MOV [SI],AL
	MOV DL,AL
	CALL DISP_2_HEX
	CALL SPACE
	INC DH
	CMP DH,16
	JNZ L2
	CALL CREF
	MOV DH,0
	
L2:
	ADD BL,AL
	ADC BH,0
	INC SI
	DEC AL
	LOOP L1
	MOV DX,BX
	CALL DISP_4_HEX
	MOV AH,4CH
	INT 21H

SPACE:
	PUSH AX
	PUSH DX
	MOV DL,20H
	MOV AH,02H
	INT 21H
	POP DX
	POP AX
RET

DISP_4_HEX: ;DX=0000-FFFF
	PUSHF ;标志位入栈
	PUSH AX
	PUSH DX
	MOV AH,DL
	MOV DL,DH
	CALL DISP_2_HEX
	MOV DL,AH
	CALL DISP_2_HEX
	POP DX
	POP AX
	POPF
RET

CREF:
	PUSH AX
	PUSH DX
	MOV DL,0AH
	MOV AH,02H
	INT 21H
	MOV DL,0DH
	INT 21H
	POP DX
	POP AX
RET

DISP_2_HEX: ;DL:00-FF
	PUSHF ;标志位入栈
	PUSH AX
	PUSH DX
	MOV AL,DL
	MOV AH,0
	MOV DL,10H
	DIV DL ; ** / 10H= AL.....AH
	MOV DL,AL
	CALL DISP_1_HEX
	MOV DL,AH
	CALL DISP_1_HEX
	POP DX
	POP AX
	POPF
RET

DISP_1_HEX:
	PUSHF
	PUSH AX
	PUSH DX
	CMP DL,09
	JBE L11
	ADD DL,7H

L11:
	ADD DL,30H
	MOV AH,02H
	INT 21H
	POP DX
	POP AX
	POPF
RET

DISP_4_DEC: ;入口参数DX,0000-9999
	PUSHF
	PUSH AX
	PUSH DX
	MOV AX,DX
	MOV DL,100
	DIV DL ; **** / 100= AL.....AH
	MOV DL,AL
	CALL DISP_2_DEC
	MOV DL,AH
	CALL DISP_2_DEC
	POP DX
	POP AX
	POPF
RET

DISP_1_DEC: ;入口参数DL,0-9

PUSHF ;标志位入栈

PUSH AX

PUSH DX

ADD DL,30H

MOV AH,02H

INT 21H

POP DX

POP AX

POPF

RET

DISP_2_DEC: ; 入口参数DL,00-99
	PUSHF ;标志位入栈
	PUSH AX
	PUSH DX
	MOV AL,DL
	MOV AH,0
	MOV DL,10
	DIV DL ; ** / 10= AL.....AH
	MOV DL,AL
	CALL DISP_1_DEC
	MOV DL,AH
	CALL DISP_1_DEC
	POP DX
	POP AX
	POPF
RET
CODESEG ENDS
END START

猜你喜欢

转载自blog.csdn.net/qq_29711355/article/details/125463218
今日推荐