Другие языки программирования и технологии
Здравствуйте помогите в программирование на ассемблере. Нужно зеркально отобразить массив из 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

Операционная система: 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

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
...
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
легко, пиши детали на почту
Качай NotePad++
Похожие вопросы
- Здравствуйте! Помогите создать сайт html, срочно нужно, зачетная работа... Может у кого есть сам шаблон блокнота?)))
- Программирование ассемблер. Дан массив из 8 байт. Посчитать количество байт, в которых число нулей и единиц одинаковое
- Ассемблер. Дан массив из 6 байт. Посчитать кол-во нулей.
- Подскажите пожалуйста, программирование в 1С. Нужно сгенерировать массив....
- Привет, помогите с программированием на СИ, передача массива в функцию..
- ПОМОГИТЕ СДЕЛАТЬ ПРОГРАММИРОВАНИЕ ЛВУМЕРНЫЙ МАССИВ
- Здравствуйте! помогите пожалуйста выполнить зачётные задания по программированию на Pascal
- Программирование на Ассемблере
- Здравствуйте. Помогите с языком программирования
- Дан массив из 8 байт. Рассматривая его, как массив из 64 бит посчитать длину самой длинной последовательности единиц.
МК 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