הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 10-10-06, 14:21   # 1
djeliran
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 3

djeliran לא מחובר  

עזרה בשפת אסמבלר.

היי חבר'ה, יש לי עבודת הגשה בשפת אסמבלי, יש שאלה שהביאו לי, שעשיתי את הפיתרון שלה, אבל בדקתי בתוכנה וזה יוצא לא נוכל, תוכלו לעזור לי להבין מה לא נכון בתוכנית שלי?
השאלה: נתון בלוק נתונים שכתובת ההתחלה שלו 800H וגודלו 30H בתים כתוב תוכנית שתמנה את המספרים שערכם קטן מ-39 ותאחסן את התוצאה בתא שכתובתו 900H.
אני עשיתי ככה:
mov si,800h
mov cx,30h
mov ax,0h
mov bx,39h
mov DI,900h
d:cmp [si],bx
jb a
jbe b
a:inc ax
dec cx
jnz d
jz c
b:dec cx
jz c
jnz d
c:mov [di],ax
הדברים שלמדנו עד עכשיו: mov, add,sub,inc,dec,cmp וג'אמפים.
מקווה שתעזרו
אגב ללא קשר, פעם היה לי משתמש פה ואני לא זוכר ת'סיסמא שלו, מה עושים?
  Reply With Quote
ישן 10-10-06, 15:30   # 2
Balrog
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 121

Balrog לא מחובר  

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

להבא עדיף רק שתשים את זה בתגיות של code, שיהיה נוח לקרוא.

עריכה2:
לגבי הקוד שלך - הבעיה היא בשורה
קוד:
	jbe b
זה אמור להיות jump above equal
jae

ולא jbe

חוצמזה שאפשר קצת לחסוך כי יש קוד שחוזר בחלק של תווית a ושל b

עריכה:
יכול להיות שמשהו כזה?:
קוד:
	MODEL small
	CODESEG

start:	mov si,800h		;	data segement address
	mov cx,30h		;	size of data segment
	mov ax,0h		;	counter
	mov bx,39h		;	39 or 39H?
	mov di,900h		;	output address


lup:	cmp [si],bx	;	check if the number is bellow 39
	JAE a		;	number bigger than 39, so dont add him
	
	inc ax		; 	if smaller than 39 -> inc counter

a:	dec cx
	jnz lup

	mov [di],ax	;	move result to its place

exit:	mov ah,4CH    ; exit program, return to dos
	mov al,0
	int 21H
END	start

Last edited by Balrog; 10-10-06 at 15:53..
  Reply With Quote
ישן 10-10-06, 22:51   # 3
djeliran
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 3

djeliran לא מחובר  

זה נראה לי נכון, אבל כשאני בודק את זה בתוכנה EMU8086 זה לא יוצא נכון. =[ אפשר לדבר איתך באיסיקיו או מסנגר?
  Reply With Quote
ישן 10-10-06, 23:03   # 4
Balrog
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 121

Balrog לא מחובר  

בעקרון אפשר (יש איסי בפרטים שלי) - אני לא בטוח אבל שאני אוכל לעזור לך

אני רואה שאנחנו שאתה התכוונת באמת לאסמבלר 8086, את הקוד שאני רשמתי הרצתי והוא עבר קומפילציה, אבל אי אפשר ממש לבדוק (צריך לשים ערכים בכתובת 800 בזכרון, ולבדוק מה יש בכתובת 900, ולא כ"כ ברור לי איך לעשות את זה, אני לא רוצה לכתוב לכתובת 800 בזכרון - לך תדע מה נדרוס שם :\)

אגב - יש איזושהי הודעת שגיאה שהאמסבלר מחזיר? אם כן באיזה שורה ומה ההודעה?
  Reply With Quote
ישן 10-10-06, 23:08   # 5
djeliran
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 3

djeliran לא מחובר  

אין שגיאה
איך משנים? איפה שאתה מריץ את התוכנית אתה לוחץ VIEW ואז MEMORY.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 23:20.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ