برنامه تقسیم با استفاده از تفریق

younesr

عضو جدید
برنامه ای بنویسید که دو عدد را از ورودی گرفته و با استفاده از دستور تفریق بر هم تقسیم نموده و خارج قسمت و باقیمانده را چاپ کند.


سلام دوستان
من تا یه جاهایی رو نوشتم که دو عدد را به صورت رشته میگیره و تبدیل به عدد میکنه اما مابقی که تقسیم را از طریق تفریق انجام بده بلد نیستم اگه کسی جواب این برنامه رو بلده کمک کنه ممنون میشم .

PHP:
datasg segment
    strlist label byte
    max db 30
    len db ?
    buffer db 30 dup (?)
    strlist1 label byte
    max1 db 30
    len1 db ?
    buffer1 db 30 dup (?)
    d db 10
datasg ends
;................................................
codesg segment
    main proc far
        assume dsatasg;cs:codesg
        mov ax,datasg
        mov ds,ax
        lea dx,strlist
        mov ah,0ah
        int 21h
        lea dx,strlist1
        mov ah,0ah
        int 21h 
;tabdil reshte aval be adad
 
mov ch,0
lea bx,buffer
mov cl,len
dec cl
mov al,[bx]
sub al,48
l1: mul d
inc bx
sub [bx],48
add ax,[bx]
loop l1

;tabdil reshte dovom be adad 
mov ch,0
lea bx,buffer1
mov cl,len1
dec cl
mov al,[bx]
sub al,48
l2: mul d
inc bx
sub [bx],48
add ax,[bx]
loop l2




       
        
     
 mov ah,4ch
 int 21h
 main endp
 codesg ends 
end main
 

farzadvahdat

عضو جدید
برنامه ای بنویسید که دو عدد را از ورودی گرفته و با استفاده از دستور تفریق بر هم تقسیم نموده و خارج قسمت و باقیمانده را چاپ کند.


سلام دوستان
من تا یه جاهایی رو نوشتم که دو عدد را به صورت رشته میگیره و تبدیل به عدد میکنه اما مابقی که تقسیم را از طریق تفریق انجام بده بلد نیستم اگه کسی جواب این برنامه رو بلده کمک کنه ممنون میشم .

PHP:
datasg segment
    strlist label byte
    max db 30
    len db ?
    buffer db 30 dup (?)
    strlist1 label byte
    max1 db 30
    len1 db ?
    buffer1 db 30 dup (?)
    d db 10
datasg ends
;................................................
codesg segment
    main proc far
        assume dsatasg;cs:codesg
        mov ax,datasg
        mov ds,ax
        lea dx,strlist
        mov ah,0ah
        int 21h
        lea dx,strlist1
        mov ah,0ah
        int 21h 
;tabdil reshte aval be adad
 
mov ch,0
lea bx,buffer
mov cl,len
dec cl
mov al,[bx]
sub al,48
l1: mul d
inc bx
sub [bx],48
add ax,[bx]
loop l1

;tabdil reshte dovom be adad 
mov ch,0
lea bx,buffer1
mov cl,len1
dec cl
mov al,[bx]
sub al,48
l2: mul d
inc bx
sub [bx],48
add ax,[bx]
loop l2




       
        
     
 mov ah,4ch
 int 21h
 main endp
 codesg ends 
end main
شما عدد رو به درستی تبدیل نمیکنید.
تبدیل صحیح رو بنده در این تاپیک نوشته و ارسال کردم.
http://www.www.www.iran-eng.ir/showthread.php/375895-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%D8%AD%D9%84-%D8%AA%D9%85%D8%B1%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-%D9%88-%D8%A7%D8%B3%D9%85%D8%A8%D9%84%DB%8C
از این برنامه استفاده کنید و تبدیل عددتون رو به درستی انجام بدید تا در ادامه درمورد تقسیم با تفریق توضیح بدم.
 

farzadvahdat

عضو جدید
کد:
[LEFT][COLOR=black][FONT=Consolas]int Devide(int a,int b){[/FONT][/COLOR][COLOR=#333333][FONT=Consolas] int f=0;[/FONT][/COLOR]
[COLOR=#333333][FONT=Consolas]  while(a-b>=0){[/FONT][/COLOR]
[COLOR=#333333][FONT=Consolas]  a-=b;[/FONT][/COLOR]
[COLOR=#333333][FONT=Consolas]  f++;}[/FONT][/COLOR][/LEFT]
  return f;}

از این کد برای نوشتن تقسیم با استفاده از تفریق استفاده کنید.
 

younesr

عضو جدید
جواب برنامه گرفتن دو رشته و تبدیل به عدد و از طریق تفریق کار تقسیم را انجام دهد.

جواب برنامه گرفتن دو رشته و تبدیل به عدد و از طریق تفریق کار تقسیم را انجام دهد.

PHP:
.data
count dw 0
column  db  0 
kargghsmt  dw  0  
maghsom  dw  0
sign dw ?
string db 6 dup(' '),'$'
sign1 db ?
list label byte
max db 20
len db ?
bf db 20 dup(' '),'$'

.code
main proc far
mov ax,@data
mov ds,ax 
call    clr
lea dx,list 
call    read
lea bx,bf
call    strnum
mov maghsom,ax
inc column
lea dx,list
call    read 
lea bx,bf 
call    strnum
l12:sub     maghsom,ax
inc kargghsmt
cmp maghsom,ax
jnb l12
mov ax,kargghsmt
call    numstr
call   nextcolumn
lea dx,string 
call    prints
mov ax,maghsom 
call    numstr
lea dx,string
call    prints 

mov ah,4ch
int 21h 

main endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;                              ;;;
;;;                              ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    
nextcolumn  proc 
    inc column
    mov      ah, 2h   
    mov      dh,column  
    mov      dl,0
    mov      bh,0   
    int      10h  
    ret
nextcolumn  endp
clr proc
    mov      ah, 6h 
    mov      al, 25   
    mov      ch, 0
    mov      cl, 0
    mov      dh, 24  
    mov      dl, 79  
    mov      bh, 14h    
    int      10h 
    ret
clr endp
read    proc
    mov ah,0ah
    int 21h
    call    nextcolumn
    ret
read    endp  
strnum  proc
    mov sign,1
    cmp byte ptr[bx],'+'
    je skip_sign
    cmp byte ptr[bx],'-'
    jne save_sign
    mov sign,-1
    skip_sign: inc bx
    save_sign: mov ax,0
    mov count,0
    digit: cmp byte ptr[bx],'0'
    jl end_digit
    cmp byte ptr[bx],'9'
    jg end_digit
    mov cx,10
    mul cx
    mov cl,[bx]
    and cx,000fh
    add ax,cx
    inc count
    inc bx
    jmp digit
    end_digit: imul sign
    ret
strnum  endp  
numstr  proc   
    lea bx,string
    add bx,count
    mov sign,' '
    cmp ax,0
    jge setup
    mov sign1,'-'
    neg ax
  setup: mov cx,10
  dloop: mov dx,0
    div cx
    add dl,30h
    mov [bx],dl
    dec bx
    cmp ax,0
    jne dloop
    mov cl,sign1
    mov [bx],cl
    ret
numstr endp
prints  proc
    mov ah,09h
    int 21h
    ret
prints endp


end main
 

nazari364

عضو جدید
لطفا اگه کسی سورس کد تقسیم "چند عدد اسکی" رو بر "چند عدد اسکی" با استفاده از دستورات div رو داره ( به زبان اسمبلی ) برام بفرسته
خیلی ممنون میشم
با سپاس nazari364@gmail.com
 

Similar threads

بالا