עבור לתוכן

עזרה באסמבלי - הדפסת מספר

Featured Replies

פורסם

שלום לכולם,

נתקלתי בבעיה קטנה.

הקדמה:

זאת תוכנית שמקבלת מספרים הנמצאים במערך.התוכנית בודקת האם המספר שלילי או חיובי ומבצעת פולינום עבור כל אחד בהתאמה.

לאחר כל פעולה כזאת אני רוצה שהתוכנית תציג לי פלט של התוכנית ופה נתקלתי בקושי.

אני לא מצליח לגרום לה להדפיס את המספר. ההדפסה בלייבל PRINT:

  .MODEL SMALL
.STACK 100h
.DATA

VAR1 DW 0
NUSTR DB 10D,-10D,20D,-20D,30D,-30D,40D,-40D,50D,-50D,'$'
RESULT DW , ,'$'
Poli1 DB 13,10,'3x^2+5x+12=',13,10,'$'
Poli2 DB 13,10,'-X^2+14=',13,10,'$'

.CODE
START:
MOV AX,@DATA ; DS can be written to only through a register
MOV DS,AX ; Set DS to point to data segment
MOV AH,9 ; Set print option for int 21h

MOV CX,1
MOV DI,0
BLOOP:
XOR AX,AX
MOV AL,NUSTR+[DI]
INC DI
CMP AL,0
JG POL1
CMP AL,0
JL POL2
LLOOP:
LOOP BLOOP
JMP TOEND

POL1:
XOR BX,BX
MOV BX,AX
SHL BX,2
ADD BX,AX
ADD BX,12
MUL AX
MOV VAR1,AX
SHL AX,1
ADD AX,VAR1
ADD BX,AX
MOV VAR1,BX

PRINT:
MOV AX,VAR1
MOV RESULT,AX
MOV AH,9
MOV DX,OFFSET RESULT
INT 21h
JMP LLOOP

POL2:
IMUL AX
ADD AX,14
MOV VAR1,AX
JMP PRINT

TOEND:
MOV AH,4Ch ; Set terminate option for int 21h
INT 21h ; Return to DOS (terminate program)
END

תודה לעוזרים

פורסם

ניסית לדבג? אתה מגיע לשורה של הINT?

פורסם
  • מחבר

ניסית לדבג? אתה מגיע לשורה של הINT?

אני מגיע ל INT ואז הוא מדפיס לי סמלים.

פורסם

שים לב ש- mov ah,9 מצפה שיהיה מצביע למחרוזת שמסתיימת ב- $ ב- dx. מה שמת לו שם?

ד.א. אתה יכול לדבג את התוכנית שלך ע"י שימוש בתוכנית debug שמגיעה עם windows.

פשוט תקליד debug yourrogram.com כדי לדבג, ותרשום ? כדי להדפיס את העזרה. השימוש בזה ממש פשוט, ויעזור לך להבין מה בידיוק רץ שם.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים