Работа с битами числа - установка, сдвиг, инверсия - Assembler

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

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

Здача: 1. Установить в 1 все биты младшего байта 2. циклично сдвинуть все байты вправо на 4 бита 3. Обратить 0,2,11,15 биты
Листинг программы
  1. MODEL SMALL
  2. STACK 100h
  3. DATASEG
  4. Set_X DB 13,10,'X = $'
  5. Result DB 13,10,'Result: $'
  6. Result1 DB 13,10,'Result1: $'
  7. Result2 DB 13,10,'Result2: $'
  8. Result3 DB 13,10,'Result3: $'
  9. error_ db 13,10,'incorrect number$'
  10. error_question db 13,10,'incorrect answer$'
  11. question_ db 13,10,'Close program? Yes - [Y],[y]; No - [N],[n] $'
  12. buff dw 6,7 Dup(?)
  13. CODESEG
  14. start:
  15. mov ax,@Data
  16. mov ds,ax
  17. m1:
  18. mov dx,OFFSET Set_X
  19. mov ah,09h
  20. int 21h
  21. mov ah,0ah
  22. xor di,di
  23. mov dx,offset buff
  24. int 21h
  25. mov dl,0ah
  26. mov ah,02
  27. int 21h
  28. mov si,offset buff+2
  29. cmp byte ptr [si],"-"
  30. jnz ii1
  31. mov di,1
  32. inc si
  33. ii1:
  34. xor ax,ax
  35. mov bx,10
  36. ii2:
  37. mov cl,[si]
  38. cmp cl,0dh
  39. jz endin
  40. cmp cl,'0'
  41. jl er
  42. cmp cl,'9'
  43. ja er
  44. sub cl,'0'
  45. mul bx
  46. add ax,cx
  47. inc si
  48. jmp ii2
  49. er:
  50. mov dx, offset error_
  51. mov ah,09
  52. int 21h
  53. jmp endprog
  54. endin:
  55. cmp di,1
  56. jnz ii3
  57. neg ax
  58. ii3:
  59. xchg cx,ax
  60. mov dx,OFFSET Result
  61. mov ah,09h
  62. int 21h
  63. xchg cx,ax
  64. test ax, ax
  65. jns oi1
  66. mov cx, ax
  67. mov ah, 02h
  68. mov dl, '-'
  69. int 21h
  70. mov ax, cx
  71. neg ax
  72. oi1:
  73. push ax
  74. call output
  75. ;--------------1 ?????????? ???? ? 1
  76. mov dx,OFFSET Result1
  77. mov ah,09h
  78. int 21h
  79. pop ax
  80. push ax
  81. or al, 0ffh
  82. call output
  83. ;--------------2
  84. mov dx,OFFSET Result2
  85. mov ah,09h
  86. int 21h
  87.  
  88. pop ax
  89. push ax
  90. rol ax,4
  91. call output
  92. ;--------------3
  93. mov dx,OFFSET Result3
  94. mov ah,09h
  95. int 21h
  96. pop ax
  97. xor ax,01010111111b
  98. call output
  99. endprog:
  100. mov ah,09h
  101. mov dx, offset question_
  102. int 21h
  103. mov ah,01h
  104. int 21h
  105. cmp al,'Y'
  106. jz m2
  107. cmp al,'y'
  108. jz m2
  109. cmp al,'N'
  110. jnz next_1
  111. jmp m1
  112. next_1:
  113. cmp al,'n'
  114. jnz next_2
  115. jmp m1
  116. next_2:
  117. mov ah,09h
  118. mov dx, offset error_question
  119. int 21h
  120. jmp endprog
  121. m2:
  122. mov ah,04ch
  123. int 21h
  124. jmp end___
  125. output:
  126. mov bx,ax
  127. mov cx,16
  128. ob1:
  129. shl bx,1
  130. jc ob2
  131. mov dl,'0'
  132. jmp ob3
  133. ob2:
  134. mov dl,'1'
  135. ob3:
  136. mov ah,2
  137. int 21h
  138. loop ob1
  139. ret
  140. end___:
  141. end start

Решение задачи: «Работа с битами числа - установка, сдвиг, инверсия»

textual
Листинг программы
  1.     xor ax,1000100000000101b

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


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

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

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы