Другие языки программирования и технологии

Здравствуйте помогите в программирование на ассемблере. Нужно зеркально отобразить массив из 256 байт

Перестроить массив данных размером 256 байт в обратном порядке. То есть, первый байт меняется местами с последним, второй с предпоследним и т. д.
Транслятор: TASM
Операционная система: MS DOS 2.0 и старше
Процессор: Intel 80186 и старше

.186
.model small
.stack 100h

.const
  Len = 256

.data
  Msg1 db "Исходный массив: ", 13, 10, 36
  Msg2 db 13, 10, "Преобразованный массив: ", 13, 10, 36
  Array db Len dup (?)
  Seed dw ?

.code

N184582284:
    mov si, @data
    mov ds, si
    mov es, si
    cld
    call Randomize

    lea di, Array
    mov cx, Len
DoCreate:
    call Random
    stosb
    loop DoCreate

    mov ah, 9
    lea dx, Msg1
    int 21h
    call OutArray stdcall, offset Array, Len

; Зеркальное отображение массива
    mov cx, Len / 2
    lea si, Array
    lea di, Array + Len - 1
DoReverse:
    lodsb
    xchg [di], al
    mov [si - 1], al
    dec di
    loop DoReverse

    mov ah, 9
    lea dx, Msg2
    int 21h
    call OutArray stdcall, offset Array, Len

    mov ah, 8
    int 21h
    mov ax, 4C00h
    int 21h

OutArray proc stdcall, Adr: word, N :word
    mov cx, N
    mov si, Adr
OutA:
    lodsb
    call OutByteHex stdcall, ax
    loop OutA
    ret
OutArray endp

OutByteHex proc stdcall uses ax, x :byte
    mov al, 20h
    int 29h
    int 29h
    mov al, x
    rol al, 4
    call Hex
    mov al, x
    call Hex
    ret
OutByteHex endp

Hex proc
    and al,0Fh
    cmp al,9
    jbe Hex2
    add al,7
Hex2:
    add al,30h
    int 29h
    ret
Hex endp

Randomize proc
    mov ah, 2Ch
    int 21h
    mov Seed, dx
    ret
Randomize endp

Random proc stdcall uses dx
    mov ax, Seed
    mov dx, 9C65h
    mul dx
    add ax, 754Dh
    mov Seed, ax
    shr ax, 8
    ret
Random endp

    end N184582284

Андрей Попов
Андрей Попов
51 590
Лучший ответ
buf 256
...
buf1 256

lds si,buf
les di,buf1
cld
mov cx,256
rep movsb
lds si,buf1
mov di,buf+255
mov cx,256
a:
lodsb
mov [di],al
dec di
loop a
Болат Ашимов
Болат Ашимов
4 234
легко, пиши детали на почту
Рустем Макашев надо было сразу писать что
МК HC08/908
Рустем Макашев под дос

model tiny
dataseg
buf db 0,1,2,3,4,5,6,7,8,9
codeseg
.386
org 100h
begin:
mov cx,10
shr cx,1

mov bx,0
mov si,offset buf
mov di,offset buf + 9

kik1:
mov al,[si]
mov ah,[di]
xchg al,ah

mov [si],al
mov [di],ah
inc si
dec di
loop kik1

ret

end begin
Качай NotePad++