Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Assembler] Создать новый массив элементов


Автор: NEt_Hunter 26.12.2006, 12:47
Заданы 2 однобайтовых массива A(10) и B(10), создать массив C(10), каждый элемент которого явл-ся суммой соответ. элементов A и B

В С++ написал бы запросто, но ASM это нечто, без понятий. Думаю не составит ВАМ ассемблерщикам особого труда. Надеюсь на ВАС  smile 
Всех с НАСТУПАЮЩИМ НОВЫМ ГОДОМ!!!

Автор: dumb 26.12.2006, 12:57
Код

.data
a db 1,2,3,4,5,6,7,8,9,0
b db 2,3,4,5,6,7,8,9,0,1
c db 10 dup (0)
.code
mov ax,@data
mov ds,ax
mov es,ax
mov si,offset a
mov bx,offset b
mov di,offset c
mov cx,10
cld
_next:
lodsb ; = mov al, ds:[si]; inc si
mov ah, byte ptr ds:[bx]
add al,ah
stosb ; = mov es:[di],al; inc di
inc bx
loop _next

Автор: NEt_Hunter 26.12.2006, 19:16
Kak baran na noviye vorota smile  Spasibo tebe!

Автор: Alexeis 26.12.2006, 23:04
NEt_Hunter, Используйте возможность автоматической конвертации транслита в русские буквы (галочка ниже смайлов)

Автор: NEt_Hunter 2.1.2007, 17:25
Извините, но код выдает слишком много ошибок:
**Error** mas.ASM(5) Illegal instruction
**Error** mas.ASM(6) Illegal instruction
**Error** mas.ASM(7) Illegal instruction
**Error** mas.ASM(10) Illegal instruction
**Error** mas.ASM(11) Illegal instruction
**Error** mas.ASM(12) Illegal instruction
**Error** mas.ASM(13) Illegal instruction
**Error** mas.ASM(14) Illegal instruction
**Error** mas.ASM(15) Illegal instruction
**Error** mas.ASM(16) Illegal instruction
**Error** mas.ASM(19) Illegal instruction
**Error** mas.ASM(20) Illegal instruction
**Error** mas.ASM(21) Illegal instruction
**Error** mas.ASM(22) Illegal instruction
**Error** mas.ASM(23) Illegal instruction
**Error** mas.ASM(24) Illegal instruction
Почти в каждой строчке.

Код

.model SMALL
.STACK 100h
.data
a db 1,2,3,4,5,6,7,8,9,0
b db 2,3,4,5,6,7,8,9,0,1
c db 10 dup (0)
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
mov si, offset a
mov bx, offset b
mov di, offset c
mov cx, 10
cld
_next:
lodsb ; = mov al, ds:[si]; inc si
mov ah, byte ptr ds:[bx]
add al,ah
stosb ; = mov es:[di],al; inc di
inc bx
loop _next

Автор: anwe 4.1.2007, 21:27
Не знаю, у меня таких ошибок не выдает, правда в TASM'е.
А код надо закончить, как и сам файл:
Код

mov ax,4C00h
int 21h
end start

Автор: NEt_Hunter 4.1.2007, 22:25
Откомпилируй пожалуйста и пришли exe-шник
Код

model SMALL
.STACK 100h
.data
a db 1,2,3,4,5,6,7,8,9,0
b db 2,3,4,5,6,7,8,9,0,1
c db 10 dup (0)
.code
start:
push @data
pop ds
pop es
mov si, offset a
mov bx, offset b
mov di, offset c
mov cx,10
cld
_next:
lodsb ; = mov al, ds:[si]; inc si
mov ah, byte ptr ds:[bx]
add al,ah
stosb ; = mov es:[di],al; inc di
inc bx
loop _next
mov ax, 4C00h
int 21h
end start

Автор: dumb 5.1.2007, 14:16
Цитата(NEt_Hunter @  4.1.2007,  22:25 Найти цитируемый пост)
push @data
pop ds
pop es

не стоит пытаться оптимизировать, не понимая сути...

Автор: anwe 5.1.2007, 22:11
Цитата(dumb @  5.1.2007,  13:16 Найти цитируемый пост)
Цитата(NEt_Hunter @  4.1.2007,  22:25 )
push @data
pop ds
pop es

Да, NEt_Hunter, на счет этого ты дал...
Держи, как просил, то есть без вывода  на экран, это ты уже можешь. smile 

Автор: NEt_Hunter 6.1.2007, 15:52
Лан, остальное сам сделаю (хотя что там делать-то  smile )
Спасибо всем кто помог!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)