PDA

View Full Version : سوال: جمع دو عدد در مبنای 16 (هگزادسیمال)



hamedv90
جمعه 12 اسفند 1390, 16:35 عصر
سلام
من یک ماکرو دارم که برای جمع دو عدد در مبنای ده هست و میخواهم این ماکرو رو به جمع دو عدد در مبنای 16 تغییر بدهم. لطفا راهنمایی بفرمایید.


enterword macro n
local l1,l2

mov ax,0
mov n,ax

l1:
mov ah,7
int 21h

cmp al,13
je l2

cmp al,'0'
jb l1

cmp al,'9'
ja l1

mov cl,al
sub cl,'0'
mov ch,'0'

mov dl,al
mov ah,2
int 21

mov ax,n
mov bx,10
mul bx
add ax,cx
mov n,ax

jmp l1

l2:
nextline
endm

xman_1365_x
شنبه 13 اسفند 1390, 07:41 صبح
ماکرو شما چند مشکل جزئی داشت که اصلاح کردم


enterword macro n
local l1,l2

mov ax,0
mov n,ax

l1:
mov ah,7
int 21h

cmp al,13
je l2

cmp al,'0'
jb l1

cmp al,'9'
ja l1

mov cl,al
sub cl,'0'
mov ch,0

mov dl,al
mov ah,2
int 21h

mov ax,n
mov bx,10
mul bx
add ax,cx
mov n,ax

jmp l1

l2:
;nextline
endm

باید در شرط هاتون a-f = 10-15 رو هم در نظر بگیرین و ضرب هاتون 16 میشه

16^3 = 4,096 , 16^2=256 , 16^1=16, 16^0=1

your number=126h

1*256 + 2*16 + 6*1 = 294d

موفق باشی

hamedv90
شنبه 13 اسفند 1390, 22:54 عصر
با تشکر از راهنماییتون :قلب: فقط من هر چی دقت کردم این کدی که شما در پست تون قرار دادید هیچ تغییری نکرده و درست مثل کد اولیه هست، من متوجه نشدم کجاشو تغییر دادید.

موفق باشید

xman_1365_x
دوشنبه 15 اسفند 1390, 14:46 عصر
فقط من هر چی دقت کردم این کدی که شما در پست تون قرار دادید هیچ تغییری نکرده و درست مثل کد اولیه هست، من متوجه نشدم کجاشو تغییر دادید.
همونطور که در پست 2 گفتم
ماکرو شما چند مشکل جزئی داشت که اصلاح کردم برنامه شما چند مشکل جزئی برای ورودی و تبدیل مبنا 10 داشت!
برای مبنای 16 هم راهنمایی کردم و در برنامه ای که در این تاپیک با نام بخشی از یک اسمبلر با اسمبلی 8086 (http://barnamenevis.org/showthread.php?330886) نوشته ام پروسیجری برای تبدیل هگز وجود دارد که میتونید استفاده کنید.
موفق باشید

hamedv90
دوشنبه 15 اسفند 1390, 15:10 عصر
ممنونم من الان اون قسمت رو که فرمودید رو مطالعه میکنم