PDA

نسخه کامل مشاهده نسخه کامل : یه سوال اسمبلی دیگه



sia0368
31-03-2009, 08:40
من این برنامه رو نوشتم ولی نمیدونم ایرادش کجاست احتمالا تو تعریف متغیر یا چیزی مربوط به متغیرها اشتباه کردم ممنون میشم بگید ایرادش کجاست


.model small
.stack 64
.data
msg_menu_0 db "menu$"
msg_menu_1 db '[1]base converter','$'
msg_menu_2 db '[2]calculator','$'
msg_menu_3 db '[3]exit','$'
msg_menu_4 db '>enter your choice:','$'

msg_base_0 db 'enter source base:','$'
msg_base_1 db 'enter a number to convert:','$'
msg_base_2 db 'enter destination base:','$'
str_newline db 10,13,'$'

;base convert variables
n db ?
number_base db ?
hnumber_base db ?
first_base db ?
hfirst_base db ?
second_base db ?
result db ?
result_base db ?
.code
start: mov ax,@data
mov ds,ax
lea dx,msg_menu_0
call writemsg
call newline
lea dx,msg_menu_1
call writemsg
call newline
lea dx,msg_menu_2
call writemsg
call newline
lea dx,msg_menu_3
call writemsg
call newline
lea dx,msg_menu_4
call writemsg
call newline
a1:
call readkey
cmp al,1
je base_convert

base_convert:
call clrscr
lea dx,msg_base_0
call writemsg
r1:
call enterbyte
mov dx,'10'
mov first_base,n ;???
call newline
lea dx,msg_base_1
call writemsg
mov dl,first_base
call enterbyte
mov number_base,n ;???
lea dx,msg_base_2
call writemsg
mov dx,'10'
call enterbyte
mov second_base,n ;???
cmp n,'10'
jne endz
;call dec_to_n
endz:
call n_to_10
;;;;;;;;;;;;;;;;procedures;;;;;;;;;;;;;;;;;;;;
;dec_to_n proc

n_to_10 proc
mov hnumber_base,number_base ;???
mov hfirst_base,first_base ;???
sub hfirst_base,'0'
sub hnumber_base,'0'
c1:
mov ax,hnumber_base
mov bl,10
div bl ;number_base/10 al=kharej ah=baghi
mov dl,al ;al=baghi dar dl rikhte shavad
mov al,ah
mul hnumber_base
add result_base,ax
mov al,2 ;arzeshe adadi har bar 2 barabar mishavad
mul hnumber_base
mov hnumber_base,ax
cmp dl,0
jne c1
mov result,result_base ;???
ret
n_to_10 endp

enterbyte proc ;save a number in n
mov al,0
mov n,al
l1:mov ah,7
int 21h
cmp al,13
je lend
cmp al,'0'
jb l1
cmp al,dl
ja l1
mov dl,al
mov ah,2
int 21h
sub dl,'0'
mov al,n
mov bl,10
mul bl
add al,dl
mov n,al
jmp l1
lend:
call newline
ret
enterbyte endp
;;;;;;;;;;;;;;;;;
Writemsg PROC
MOV AH,9
INT 21h
RET
Writemsg ENDP
;;;;;;;;;;;;;;;;;
NewLine PROC
MOV AH,9
MOV DX,OFFSET str_newLine
INT 21h
RET
NewLine ENDP
;;;;;;;;;;;;;;;;
clrscr PROC
MOV AH,06h
MOV AL,0
MOV BH,1Fh
MOV CX,0
MOV DH,24
MOV DL,79
INT 10h
MOV DX,0
CALL GotoDHDL
RET
clrscr ENDP
;;;;;;;;;;;;;;;
GotoDhDl PROC
MOV AH,02h
MOV BH,0
INT 10h
RET
GotoDhDl ENDP
;;;;;;;;;;;;;
ReadKey PROC
MOV AH,7
INT 21h
sub al,'0'
RET
ReadKey ENDP

sia0368
01-04-2009, 11:41
فروم یا سایتی مخصوص اسمبلی سراغ دارید که مخصوص اسمبلی باشه ایرانی یا خارجی

farshidshd
04-04-2009, 14:26
سلام
دوستان برای رسم دایره به زبان اسمبلی چه باید کنم؟؟؟

M E H D I
04-04-2009, 15:41
فروم یا سایتی مخصوص اسمبلی سراغ دارید که مخصوص اسمبلی باشه ایرانی یا خارجی


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sia0368
09-04-2009, 12:57
ایراد برنامه رو فهمیدم
برای ریختن یه متغیر به متغیر دیگه باید از یک ثبات کمکی استفاده کرد
در ضمن الان تو تبدیل مبنای 10 به n گیر کردم کسی راهی بلده؟