PDA

View Full Version : علت اومدن این message حین run برنامه تو emu8086 چیه؟



rahim_shirkhani
شنبه 14 اردیبهشت 1392, 09:10 صبح
کسی میدونه علت اومدن این پیام چیه ؟
INT 21h, AH=09h -
address: 00140
byte 24h not found after 2000 bytes.
; correct example of INT 21h/9h:
mov dx, offset msg
mov ah, 9
در ضمن کد من اینه


org 100h
STSEG SEGMENT
DB 64 DUP(?)
STSEG ENDS
;-------------------
DTSEG SEGMENT
MESSAGE1 DB "WHAT IS YOUR LAST NAME?","$"
ORG 20H
BUFFER1 DB 9,?,9 DUP(0)
ORG 30H
MESSAGE2 DB CR,LF,"THE NUMBER OF LETTERS IN YOUR NAME IS:","$"

DTSEG ENDS
ROW EQU 08
COLUMN EQU 05
CR EQU 0DH
LF EQU 0AH
;----------------------
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
MOV AX,DTSEG
MOV DS,AX
CALL CLEAR
CALL CURSOR

MOV AH,09
MOV DX,OFFSET MESSAGE1
INT 21H

MOV BX,OFFSET BUFFER1
MOV CL,[BX+1]
OR CL,30H

MOV MESSAGE2+40,CL
MOV AH,09
MOV DX,OFFSET MESSAGE2
INT 21H

MOV AH,4CH
INT 21H
MAIN ENDP
;-------------------------
CLEAR PROC
MOV AX,0600H
MOV BH,07
MOV CX,0000
MOV DX,184FH
INT 10H
RET
CLEAR ENDP
;-------------------------
CURSOR PROC
MOV AH,02
MOV BH,00
MOV DL,COLUMN
MOV DH,ROW
INT 10H
RET
CURSOR ENDP
;-------------------------
CDSEG ENDS
END MAIN
ret

xman_1365_x
شنبه 14 اردیبهشت 1392, 16:10 عصر
وقتی در آدرسی که شما بهش میدن کاراکتر دالر رو برای انتهای رشته پیدا نکنه این خطارو میده



;org 100h
STSEG SEGMENT
DB 64 DUP(?)
STSEG ENDS
;-------------------
DTSEG SEGMENT
MESSAGE1 DB "WHAT IS YOUR LAST NAME?","$"
;ORG 20H
BUFFER1 DB 9,?,9 DUP(0)
;ORG 30H
MESSAGE2 DB CR,LF,"THE NUMBER OF LETTERS IN YOUR NAME IS: ","$"

DTSEG ENDS
ROW EQU 08
COLUMN EQU 05
CR EQU 0DH
LF EQU 0AH
;----------------------
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
MOV AX,DTSEG
MOV DS,AX
CALL CLEAR
CALL CURSOR

MOV AH,09
MOV DX,OFFSET MESSAGE1
INT 21H

MOV BX,OFFSET BUFFER1
MOV CL,[BX+1]
OR CL,30H

MOV MESSAGE2+40,CL
MOV AH,09
MOV DX,OFFSET MESSAGE2
INT 21H

MOV AH,4CH
INT 21H
MAIN ENDP
;-------------------------
CLEAR PROC
MOV AX,0600H
MOV BH,07
MOV CX,0000
MOV DX,184FH
INT 10H
RET
CLEAR ENDP
;-------------------------
CURSOR PROC
MOV AH,02
MOV BH,00
MOV DL,COLUMN
MOV DH,ROW
INT 10H
RET
CURSOR ENDP
;-------------------------
CDSEG ENDS
END MAIN
ret

موفق باشی

rahim_shirkhani
شنبه 14 اردیبهشت 1392, 16:57 عصر
وقتی در آدرسی که شما بهش میدن کاراکتر دالر رو برای انتهای رشته پیدا نکنه این خطارو میده



;org 100h
STSEG SEGMENT
DB 64 DUP(?)
STSEG ENDS
;-------------------
DTSEG SEGMENT
MESSAGE1 DB "WHAT IS YOUR LAST NAME?","$"
;ORG 20H
BUFFER1 DB 9,?,9 DUP(0)
;ORG 30H
MESSAGE2 DB CR,LF,"THE NUMBER OF LETTERS IN YOUR NAME IS: ","$"

DTSEG ENDS
ROW EQU 08
COLUMN EQU 05
CR EQU 0DH
LF EQU 0AH
;----------------------
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,DS:DTSEG,SS:STSEG
MOV AX,DTSEG
MOV DS,AX
CALL CLEAR
CALL CURSOR

MOV AH,09
MOV DX,OFFSET MESSAGE1
INT 21H

MOV BX,OFFSET BUFFER1
MOV CL,[BX+1]
OR CL,30H

MOV MESSAGE2+40,CL
MOV AH,09
MOV DX,OFFSET MESSAGE2
INT 21H

MOV AH,4CH
INT 21H
MAIN ENDP
;-------------------------
CLEAR PROC
MOV AX,0600H
MOV BH,07
MOV CX,0000
MOV DX,184FH
INT 10H
RET
CLEAR ENDP
;-------------------------
CURSOR PROC
MOV AH,02
MOV BH,00
MOV DL,COLUMN
MOV DH,ROW
INT 10H
RET
CURSOR ENDP
;-------------------------
CDSEG ENDS
END MAIN
ret

موفق باشی



خیلی ممنون از راهنمایی تون .ولی الان کجای کد رو باید اصلاح کنم ؟؟

rahim_shirkhani
دوشنبه 16 اردیبهشت 1392, 08:46 صبح
منظورتون رو متوجه نشدم .از $ برای انتهای رشته استفاده کردم ؟دقیقا کجای کد مشکل داره؟؟؟

xman_1365_x
دوشنبه 16 اردیبهشت 1392, 23:46 عصر
کدتون رو کمی اصلاح کردم،انگار توجه نکردین
وقفه21 تابع9 یک رشته رو چاپ میکنه تا زمانی که به دالر برسه،در کد شما دالر خراب میشد.
سعی کنید خط به خط دیباگ کنید و مقادیر حافظه رو چک کنید.
موفق باشی

rahim_shirkhani
سه شنبه 17 اردیبهشت 1392, 10:55 صبح
اوکی متوجه شدم.ممنون به خاطر راهنماییتون.:تشویق: