题目描述
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