Сохранить два бита числа для операций с ними - Assembler

Узнай цену своей работы

Формулировка задачи:

Пользователь вводит число от 0 до 255 и номера двух битов этого числа. Как мне извлечь эти два бита чтобы работать с ними? Просто чтобы они лежали где то в регистрах

Решение задачи: «Сохранить два бита числа для операций с ними»

textual
Листинг программы
model   tiny,pascal
.code
org 100h
begin:  call    InpNum,offset dbInpNum
    cmp ax,0FFh
    ja  Begin
    mov dbNumber,al
@@01:   call    InpNum,offset dbInpBit
    cmp ax,7
    ja  @@01
    mov dbNumOne,al
@@02:   call    InpNum,offset dbInpBit
    cmp ax,7
    ja  @@02
    mov dbNumTwo,al
    xor cx,cx
    mov dx,101h
    mov cl,dbNumOne
    shl dl,cl
    mov cl,dbNumTwo
    shl dh,cl
    xor ah,ah
    mov al,dbNumber
    call    OutNum,offset dbRes,ax,10
    call    OutNum,offset dbRes,ax,2
    xor al,dl
    call    OutNum,offset dbRes,ax,2
    xor al,dh
    call    OutNum,offset dbRes,ax,2
    mov ah,9
    lea dx,dbPres
    int 21h
    xor ax,ax
    int 16h
    ret
dbInpNum    db  10,13,'Enter number:$'
dbInpBit    db  10,13,'Enter bit number:$'
dbRes       db  10,13,'Result:$'
dbPres      db  10,13,'press any key$'
InpNum  proc    a:word
    mov ah,9
    mov dx,a
    int 21h
    mov di,10
    xor bx,bx
IN01:   xor ax,ax
    int 16h
    cmp al,13
    jz  IN02
    cmp al,'0'
    jb  IN01
    cmp al,'9'
    ja  IN01
    int 29h
    and ax,0fh
    xchg    bx,ax
    xor dx,dx
    mul di
    add bx,ax
    or  bh,bh
    jmp IN01
IN02:   mov ax,bx
    ret
InpNum  endp
OutNum      proc    a:word,b:word,c:word
uses    ax,dx
    mov ah,9
    mov dx,a
    int 21h
    mov ax,b
    mov di,c
    xor cx,cx
ON01:   xor dx,dx
    div di
    or  dl,'0'
    push    dx
    inc cx
    or  ax,ax
    jnz ON01
ON02:   pop ax
    int 29h
    loop    ON02
    ret
OutNum      endp
dbNumber    db  ?
dbNumOne    db  ?
dbNumTwo    db  ?
    end begin

Объяснение кода листинга программы

  1. Сохранение двух битов числа для операций с ними
  2. Ввод числа и двух битов
  3. Представление вводимых данных
  4. Вывод результата
  5. Завершение работы программы
  6. Проверка нажатой клавиши
  7. Вывод сообщения
  8. Возврат в основную программу
  9. Проверка корректности введенного числа
  10. Вычисление результата
  11. Проверка корректности введенного бита
  12. Вычисление результата
  13. Вычисление результата
  14. Вывод результата
  15. Проверка корректности введенного бита
  16. Вычисление результата
  17. Вывод результата
  18. Проверка корректности введенного бита
  19. Вычисление результата
  20. Вывод результата

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы