اول: کدام خط برنامه خطا دارد.
دوم: قسمت اول را باید در data segment کپی کنید نه این که همین جور همه را با هم کپی کنید.
این هم سورس کامل فقط کافی است در یک فایل با پسوند ASM.* همه را کپی کنی و با اسمبلی اجراء کن.
کد:
; multi-segment executable file template.
data segment
; add your data here!
TEMP DB 20 DUP(?)
STR DB 'Please Enter number:','$'
YES DB 'YES number:','$'
NO DB 'NO number:','$'
BIG DB 'BIG number:','$'
SMAL DB 'SMAL number:','$'
AVG DB 'AVG number:','$'
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
MOV SI,0
MOV CX,20
L:
MOV AH,01H
INT 21H
MOV TEMP[SI],AL
INC SI
LOOP L
;-----------------------------------
MOV AH,09H
MOV DX,OFFSET STR
INT 21H
;-----------------------------------
MOV AH,01H
INT 21H
MOV BL,AL
;-----------------------------------
MOV SI,0
MOV CX,20
L4:
CMP BL,TEMP[SI]
JE L1
INC SI
LOOP L4
JMP L3
L1:
MOV AH,09H
MOV DX,OFFSET YES
INT 21H
L3:
;-----------------------------------
L2:
MOV AH,09H
MOV DX,OFFSET NO
INT 21H
;-----------------------------------
MOV SI,0
MOV DL,0
MOV CX,20
L5:
ADD DL,TEMP[SI]
INC SI
LOOP L5
MOV DH,0
MOV AX,DX
MOV BL,20
DIV BL
MOV AH,09H
MOV DX,OFFSET AVG
INT 21H
MOV AH,02H
MOV DL,AL
INT 21H
;-----------------------------------
MOV SI,1
MOV DL,TEMP[0]
MOV CX,20
L6:
CMP DL,TEMP[SI]
JA L7
INC SI
LOOP L6
JMP L8:
L7:
MOV DL,TEMP[SI]
JMP L6:
L8:
MOV BL,DL
MOV AH,09H
MOV DX,OFFSET BIG
INT 21H
MOV AL,BL
MOV AH,02H
MOV DL,AL
INT 21H
;-----------------------------------
MOV SI,1
MOV DL,TEMP[0]
MOV CX,20
L9:
CMP DL,TEMP[SI]
JL L10
INC SI
LOOP L9
JMP L11:
L10:
MOV DL,TEMP[SI]
JMP L9:
L11:
MOV BL,DL
MOV AH,09H
MOV DX,OFFSET SMAL
INT 21H
MOV AL,BL
MOV AH,02H
MOV DL,AL
INT 21H
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.