📄 addae.asm
字号:
.486
DATA SEGMENT AT 0 USE16
ORG 2000H
ADDATA DB ?,?,?,?
max db ?
min db ?
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
ORG 1200H
BEG: JMP START
TAB DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H
DB 80H,90H,88H,83H,0c6H,0a1H,86H,8eH
ADPORT EQU 300H
daPORT EQU 320H
APORT EQU 200H
cPORT EQU 208H
bPORT EQU 204H
CONPORT EQU 20CH
CONDATA EQU 80H
CDATA EQU 05H
START: MOV AX,DATA
MOV DS,AX
MOV DX,CONPORT
MOV AL,CONDATA
OUT DX,AL
ll: lea bx,addata
mov cx,4
last1: call read
mov [bx],al
inc bx
loop last1
lea bx,addata
mov cx,3
mov al,[bx]
mov max,al
mov min,al
inc bx
last2: mov al,[bx]
cmp al,max
ja plus
cmp al,min
ja last3
mov min,al
jmp last3
plus: mov max,al
last3: inc bx
loop last2
mov ax,0
lea bx,addata
mov cx,4
last4: mov dh,0
mov dl,[bx]
add ax,dx
inc bx
loop last4
mov dh,0
mov dl,max
sub ax,dx
mov dh,0
mov dl,min
sub ax,dx
mov dl,2
div dl
;LAST: MOV DX,ADPORT
; nop
; nop
; nop
;
; OUT DX,AL
; NOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NOP
;mov dx,ADPORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; MOV CX,80
;NEXT: DEC CX
; JNZ NEXT
; IN AL,DX
push ax
; MOV ADDATA,AL
MOV AH,AL
SHR AL,4
MOV BX,OFFSET TAB
XLAT TAB
MOV DX,APORT
OUT DX,AL
nop
nop
AND AH,0FH
MOV AL,AH
MOV BX,OFFSET TAB
XLAT TAB
MOV DX,BPORT
OUT DX,AL
nop
nop
MOV DX,CPORT
MOV AL,CDATA
OUT DX,AL
NOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;
NOP ;; DELAY ;;
mov dx,daport
pop ax
out dx,al
NOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;
JMP ll
read proc
LAST: MOV DX,ADPORT
nop
nop
nop
OUT DX,AL
NOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NOP
mov dx,ADPORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV BP,80
NEXT: DEC BP
JNZ NEXT
IN AL,DX
ret
read endp
CODE ENDS
END beg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -