xman_1365_x
یک شنبه 29 آبان 1390, 16:50 عصر
با سلام و احترام خدمت همه دوستان
دو برنامه کارشون مشخص هست دو رشته عددی با طول مشخص که تعیین میکنید رو با هم جمع میکند ،اگر دوستان سوال یا مشکلی در این ارتباط داشتن در خدمتم(لطفا خواندن امضا فراموش نشه)
جمع دو رشته عددی دسیمال
data segment
; add your data here!
pkey db 13,10,"press any key...$"
x db "75000000000000000000"
y db "25536000000000000000"
sum db 5 dup(0)
MAX EQU 19
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
;convert char to int
mov cx,MAX + 1
mov bx,MAX
x1:
sub x[bx],30h
sub y[bx],30h
dec bx
loop x1
;sum char(number) array
xor si,si
mov si, MAX
mov cx,MAX
add_loop:
mov al,x[si]
mov ah,y[si]
add al,ah
cmp al,10
jae carry
add sum[si+1],al
jmp endcarray
carry:
sub al,10
add sum[si+1],al
add sum[si-1],1
endcarray:
dec si
loop add_loop
;convert int to char & display output
xor bx,bx
mov ah,2
x2:
add sum[bx],30h
mov dl,sum[bx]
int 21h
inc bx
cmp bx,MAX + 2
je endx2
jmp x2
endx2:
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
جمع دو رشته عددی باینری
.data
; add your data here!
MAX EQU 19
pkey db 13,10,"press any key...$"
x db "00000000000000101110"
y db "00000000000000010111"
sum db MAX+2 dup(0)
.stack dw 128 dup(0)
.code
start:
; set segment registers:
.startup
; add your code here
;convert char to int
mov cx,MAX + 1
mov bx,MAX
x1:
sub x[bx],30h
sub y[bx],30h
dec bx
loop x1
;sum char(number) array
xor si,si
mov si, MAX
mov cx,MAX
add_loop:
mov al,x[si]
mov ah,y[si]
mov bl,sum[si+1]
add al,ah
add al,bl
cmp al,2
je carry2
cmp al,3
je carry3
mov sum[si+1],al
jmp endcarray
carry2:
mov sum[si+1],0
mov sum[si],1
jmp endcarray
carry3:
mov sum[si+1],1
mov sum[si],1
endcarray:
dec si
loop add_loop
;convert int to char & display output
xor bx,bx
mov ah,2
x2:
add sum[bx],30h
mov dl,sum[bx]
int 21h
inc bx
cmp bx,MAX + 2
je endx2
jmp x2
endx2:
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
end start ; set entry point and stop the assemble
موفق باشید.
دو برنامه کارشون مشخص هست دو رشته عددی با طول مشخص که تعیین میکنید رو با هم جمع میکند ،اگر دوستان سوال یا مشکلی در این ارتباط داشتن در خدمتم(لطفا خواندن امضا فراموش نشه)
جمع دو رشته عددی دسیمال
data segment
; add your data here!
pkey db 13,10,"press any key...$"
x db "75000000000000000000"
y db "25536000000000000000"
sum db 5 dup(0)
MAX EQU 19
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; add your code here
;convert char to int
mov cx,MAX + 1
mov bx,MAX
x1:
sub x[bx],30h
sub y[bx],30h
dec bx
loop x1
;sum char(number) array
xor si,si
mov si, MAX
mov cx,MAX
add_loop:
mov al,x[si]
mov ah,y[si]
add al,ah
cmp al,10
jae carry
add sum[si+1],al
jmp endcarray
carry:
sub al,10
add sum[si+1],al
add sum[si-1],1
endcarray:
dec si
loop add_loop
;convert int to char & display output
xor bx,bx
mov ah,2
x2:
add sum[bx],30h
mov dl,sum[bx]
int 21h
inc bx
cmp bx,MAX + 2
je endx2
jmp x2
endx2:
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
جمع دو رشته عددی باینری
.data
; add your data here!
MAX EQU 19
pkey db 13,10,"press any key...$"
x db "00000000000000101110"
y db "00000000000000010111"
sum db MAX+2 dup(0)
.stack dw 128 dup(0)
.code
start:
; set segment registers:
.startup
; add your code here
;convert char to int
mov cx,MAX + 1
mov bx,MAX
x1:
sub x[bx],30h
sub y[bx],30h
dec bx
loop x1
;sum char(number) array
xor si,si
mov si, MAX
mov cx,MAX
add_loop:
mov al,x[si]
mov ah,y[si]
mov bl,sum[si+1]
add al,ah
add al,bl
cmp al,2
je carry2
cmp al,3
je carry3
mov sum[si+1],al
jmp endcarray
carry2:
mov sum[si+1],0
mov sum[si],1
jmp endcarray
carry3:
mov sum[si+1],1
mov sum[si],1
endcarray:
dec si
loop add_loop
;convert int to char & display output
xor bx,bx
mov ah,2
x2:
add sum[bx],30h
mov dl,sum[bx]
int 21h
inc bx
cmp bx,MAX + 2
je endx2
jmp x2
endx2:
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
end start ; set entry point and stop the assemble
موفق باشید.