الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحدي سريع

مغلق
بدأه computer-j في 1 مارس 2005 · 4 رد · 703 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله..............

انا عضو جديد غي هذا المنتدى الرائع :D ..............الذي لاطالما فادني ورجعت اليه :rolleyes: ............الحقيقه لدي بعض الاسئله.........المستعجله <_< ...........التي لم استطع سردها الا بعد ان احيي...كل من يقوم على هذا المنتدى ;)

جزاكم الله خير لجزاء

اخواني انا ادرس في كندا فدراستي باللغه الانجليزيه......وهذا في الحقيقه العائق الوحيد في الاستفاده من دروسكم :blink: ......جزاكم الله خيرا ;) ....كي لا اطيل عليكم اكثر من هذا

هناك 3 برامج لم استطع كتابتها بلغه الاسمبلي (h) .........وهي مطلوبه لاختبار الغ :s د.......(اتصور في توقيتكم يكون بعد غد لان الاختبار في المساء).....فاتمنى منكم مساعدتي جميعا..........حيث انه اختبارمهم....وعلي ان احرز فيه الدرجات لكي ابقى في الجامعه :unsure: :wacko: والا طردت منها

والاسئله هي ما يلي:

1 -- Input a string from the console and redisplay it on the screen. Use INT

21h function 0Ah for the input and use function 9 for the output.

2 -- Create a loop that inputs any number of lowercase characters from the

console. As each character is input, convert it to uppercase and display it on the

console. Terminate the program by typing CTRL-BREAK.

The Int 21h function 1 may be used for input since it does not echo the characters

and function 2 may be used for output.

3-- Write a short procedure to do the following:

w Scroll a window from row 7, column 10 to row 22, column 70, with a reverse video

attribute.

w Locate the cursor at row 21, column 20.

w Display a line of text, such as This Text is in the Window

ارجوا منكم امساعده في اقرب فرصه.......واتمنى ان تكون الاسئله واضحه..........ولكم مني جزيل الشكر

ارجوك..............لا تغادر حتى تساعدني......ارجوكم ساعدوا اخاكم

#2

السلام عليكم,

لقد سبق وأعطيت أمثلة مثل ما تطلبه وهي موضوعة في هذا المنتدى.

إلى القاء.

#3

السلام عليكم يا اخي chik

جزاك الله خير على مرورك :D ......ولكن اذا تكرمت.....هل بالامكان اجابه السؤال الثاني....لانني في الحقيقه.....لم استطع فهمه مطلقا :( .........اما بالنسبه للسؤال الاول فانني حاولت وهذه محاولتي....

البرنامج بانه هناك خطاء :wacko: فلا يعمل

title Hello World Program (hello.asm)

; This program displays "Keyboard input"

dosseg

.model small

.stack 100h

;

.code

main proc

mov ax,@data ; initialize

mov ds,ax ; data-segment register

;

mov ah,0Ah ; set

mov dx,offset kybdData ; address of message

int 21h ; and display it

;

mov ah,9

mov dx,offset kybdData

int 21h

mov ax,4C00h ; transmit exit code

int 21h ; to operating system

main endp ; end of code to TASM

;

.data

count=80

KEYBOARD STRUCT

maxInput BYTE count

inputCount BYTE ?

buffer BYTE count DUP(?)

KEYBOARD ENDS

kybdData KEYBOARD <>

end main ; end of source file

; and entry address

والثالث ايضا

title Q3 (Q3.asm)

; This program scrolls a window

INCLUDE Irvine32.inc

dosseg

.model small

.stack 100h

;

.code

main proc

mov ax,@data ; initialize

mov ds,ax ; data-segment register

;

mov ax,0600h ; set

mov ah,2

mov ch,7

mov cl,10

mov dh,22

mov dl,70

mov bh,0

int 10h ; and display it

;

mov dx,OFFSET message

call WriteString

mov ah,10h ; transmit exit code

int 16h

mov ax,4C00h

int 21h ; to operating system

main endp ; end of code to TASM

;

.data

message BYTE "The program works!",0

end main ; end of source file

; and entry address

ولكنها لاتعمل....ولم استطع حل هذا.......كما انني كل ما ردت استخدام الدوال :blink: .....فان برامجي لا تعمل.....فارجوا منكم جميعا الافاده>>>بقي لي ساعتان على الاختبار ادعوا لي

شكرا

#4

السلام عليكم,

سأعطيك هنا مثالا كنت وضعته هنا من قبل وهو يطلب من المستعمل أن يدخل اسمه - أو أي جملة - ويعود البرنامج بكتابة ما أدخله المستعمل وأضن أن هذا مثل ما تريد عمله :

s_seg segment para stack
  db 100 dup ("?")
  
  s_seg ends
  
  d_seg segment

	nam db  30, 30 DUP ('0');buffer for entered name
	nline      db  10,10,'$'    ; this prints a new line
message     db  "Enter Your Name :",10,13 ,'$'
  string db "my name is : $"

    d_seg ends
  
  c_seg segment
  assume cs:c_seg , ds:d_seg , ss:s_seg
  
         main proc
         mov ax,d_seg
         mov ds,ax
;******** Print the message******************
lea dx,message
mov ah,9
int 21h
;*******************************************
;******** Process the entered string ********
lea dx,nam
mov di,dx

mov ah,0Ah
int 21h     
    
 xor bx,bx       
mov bl,[di+1]  ;bl will contain lenth of string
inc bl
inc bl
mov byte ptr [di + bx],'$'; make the end of string
;*********************************************
;******** print a new line
lea dx,nline
mov ah,9
int 21h

;*********** Print string
lea dx,string
mov ah,9
int 21h
;*********** print the name
lea dx,nam
inc dx
inc dx
mov ah,9
int 21h
;******** print a new line
lea dx,nline
mov ah,9
int 21h
mov ah,4ch
int 21h

         main endp
         c_seg ends
         end main

وهنا يجب أن نعرف أن المقاطعة interruption 0A تتطلب buffer لتضع فيه ما ندخله من الكايبورد. ويجب أن يكون البايت الأول من البافر يدل على طول الجملة المرتقبة وحين نخل الجملة فأن البايت الثاني سيحتوي على طول الجملة التي أدخلناها أما الجملة التي أدخلناها فستبدأ في البايت الثالث أو البايت رقم 2 لأننا سنبدأ بالبايت 0 .

إلى اللقاء.

#5

اشكرك يا اخي مره اخرى....

ولكن هل الامكانيه معرفه حل السؤال الثاني.....

اشكرك كثيرا على المساعده

:D

هذا الموضوع مغلق.

مواضيع مشابهة