Assembler - Help!

  • Автор темы Tumbus
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Tumbus

#1
Кто-нибудь может помочь написать знаковое деление в формате 32:16?
 
G

Guest

#2
тут возникли проблемы с программами.

Собственно вот 2 штуки

1. Определить, содержит ли байт данных в кодовом сегменте в разрядах 6-2 двоичную комбинацию 11010. Если да, то сформировать код в регистре ВН следующим образом : сумма тетрад исходного байта, если значение старшейй тетрады больше младшей, разность тетрад в противном случае.
Если полученный в ВН код меньше 40, инвертировать его.

2. В области кодового сегмента размещен массив двухбайтных данных. Данные, значения которых находятся в интервале от -20 до 20 заменить на противоположные по знаку и в однобайтном формате записать в другую область.

Все проги односегментные, т.к. потом надо делать .сом

Вот мои соображения:

Код:
.386
preved segment use32 
 assume cs:preved
       org 100h
M1: mov ax,preved
 mov cs,ax
   mov al,ds:[a]
   and al,01111100b
   cmp al,01101000b
   jne M2
   mov al,ds:[a]
   mov ah,al
   ror ah,4
   and ax, 0000111100001111b
   cmp ah,al
   jl M3
   add ah,al
   mov bh,ah
M3: sub ah,al
   mov bh,ah
M2: cmp bh,40
   jge M4
   not bh
M4: int 20h
   a db (?)
preved ends
   end M1
и вторая

Код:
.386
preved segment use32
assume cs:preved
Org 100h
M1: mov ax,preved
 mov cs,ax
  mov cs,ax
  mov CX,10
  mov SI,0
  mov DI,0
M2: cmp cs:[mass+SI],-20
  jg M3
  inc SI
  inc SI
  jmp M5
M3: cmp cs:[mass+SI],20
  jl M4
  inc SI
  inc SI
  jmp M5
M4: neg cs:[mass+SI]
  mov al,cs:[mass+SI]
  mov cs:[mass2+DI]
  inc DI
M5: loop M2
  int 20h 
mass dw 10 dup (?)
mass2 db 10 dup (?)
preved ends
  end M1
B)
 
Статус
Закрыто для дальнейших ответов.