Арифметические операции в языке программирования Assembler

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

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

здрастуйте подскажите как сделать так что бы в результат выводило " значение с минусом" или "целое" или "дробей" а то ток с минусом кидает каждый раз
Листинг программы
  1. MODEL SMALL
  2. STACK 100h
  3. DATASEG
  4. Question DB 10,13,'Close program? - [Y/N]$'
  5. Set_X DB 13,10,'X = $'
  6. Result DB 13,10,'Y = $'
  7. error_ db "incorrect number$"
  8. buff db 6,7 Dup(?)
  9. CODESEG
  10. start:
  11. mov ax,@Data
  12. mov ds,ax ; ?????????? ??????? DS ????? ?????, ??? ??? ???????? ?? ??????? ?????
  13. mov dx,OFFSET Set_X ; ????????? ?? ????????????-?????????
  14. mov ah,09h ; ??????? DOS ?????? ???????
  15. int 21h
  16. ;************************************************************************************
  17. ;********* ?????????? ????? ? ?????????? ? ???????????? ???? ? ??????? ???????? ************
  18. ;********????????? ? ???????? AX*********
  19. ;************************************************************************************
  20. mov ah,0ah
  21. xor di,di
  22. mov dx,offset buff ; ?????? ??????
  23. int 21h ; ???????? ???????
  24. mov dl,0ah
  25. mov ah,02
  26. int 21h ; ???????? ??????? ???????
  27. ; ?????????? ????? ??????
  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] ; ????? ?????? ? ?????f
  38. cmp cl,0dh ; ??????????? ?? ??? ?? ????????
  39. jz endin
  40. ; ???? ?????? ?? ????????, ?? ??????????? ???? ?? ????????????
  41. cmp cl,'0' ; ???? ???????? ???????? ?????? <0
  42. jl er
  43. cmp cl,'9' ; ???? ???????? ???????? ?????? >9
  44. ja er
  45. sub cl,'0' ; ?????? ? ??????? ?????
  46. mul bx ; ???????????? ?? 10
  47. add ax,cx ; ??????? ?? ?????
  48. inc si ; ????????? ?? ????????? ??????
  49. jmp ii2 ; ??????????
  50. er: ; ???? ???? ???????, ?? ???????? ???????????? ??? ?? ? ????????
  51. mov dx, offset error_
  52. mov ah,09
  53. int 21h
  54. int 20h
  55. ; ??? ??????? ? ?????? ????????? ????? ??????????? ? ax
  56. endin:
  57. cmp di,1 ; ???? ???????????? ?????????, ??
  58. jnz ii3
  59. neg ax ; ????? ????? ?????????
  60. ii3:
  61. ;************************************************************************************
  62. ;**************** ?????????? ??????? ?????????? ? ????????????? ????? ********************
  63. ;
  64. mov bx,ax
  65. mov ax,4
  66. sub ax,bx
  67. test ax,ax
  68. jns div_5
  69. neg ax
  70. div_5:
  71. mov cx, 5
  72. div cx
  73. mov bx, ax
  74. mul bx
  75. mul bx
  76. jp write_neg
  77. add ax, 1
  78. mov cx, ax
  79. write_neg:
  80. neg ax
  81. add ax, 1
  82. mov cx,ax
  83. mov dx,OFFSET Result ; ?????? ??
  84. mov ah,09h ; ??????? DOS ?????? ????????????
  85. int 21h ; ??????? ?????????? ????????????
  86. xchg cx,ax
  87. ;************************************************************************************
  88. ;************* ??????? ??????? ???????????? ????? ? ??????? ? ?????? ?? ?? ????? ************
  89. ;************************************************************************************
  90. ; ??????????? ????? ?? ????
  91. test ax, ax
  92. jns oi1
  93. ; ???? ???? ???'????, ???????? ????? ? ???????? ???? ??????.
  94. mov cx, ax
  95. mov ah, 02h
  96. mov dl, '-'
  97. int 21h
  98. mov ax, cx
  99. neg ax
  100. ; ????????? ???? ?????? ??????? ? CX.
  101. oi1:
  102. xor cx, cx
  103. mov bx, 10 ; ?????? ??. 10 ??? ?????????? ? ?.?.
  104. oi2:
  105. xor dx,dx
  106. div bx
  107. ; ?????? ????? ?? ?????? ??. ? ??????? ???????? ??????? ?????.
  108. ; ??????? ???????? ?? ???????, ???? ????????? ?? ? ????.
  109. push dx
  110. inc cx
  111. ; ? ? ??????? ?????????? ?? ? ????, ?????????? ??? ????? ???????
  112. ; ????? ??????, ???? ?? ?????????? ????, ?? ???????, ?? ????
  113. ; ????? ???? ????.
  114. test ax, ax
  115. jnz oi2
  116. ; ????? ?????????? ?? ??????.
  117. mov ah, 02h
  118. oi3:
  119. pop dx
  120. ; ?????? ??????? ?????, ?????????? ?? ? ?????? ? ????????.
  121. add dl, '0'
  122. int 21h
  123. ; ????????? ????? ??????? ?????, ??????? ???? ??????????.
  124. loop oi3
  125. ;************************************************************************************
  126. ;************ ?????????? ??????? ???????????? ????? ? ??????? ? ?????? ?? ?? ????? ***********
  127. ;************************************************************************************
  128. mov dx,OFFSET Question
  129. mov ah,09h
  130. int 21h
  131. mov ah,01h
  132. int 21h
  133. cmp al,'y'
  134. jz closethatshit
  135. jmp start
  136. closethatshit:
  137. mov ah,04ch ; ??????? DOS ?????????? ????????
  138. int 21h ; ????????? ????????
  139. end start

Решение задачи: «Арифметические операции в языке программирования Assembler»

textual
Листинг программы
  1. endin:
  2.     cmp di, 1
  3.     jnz ii3
  4.     neg ax
  5. ii3:
  6.  
  7. ;************************************************************************************
  8.     xor dx, dx
  9.     mov bx, ax
  10.     mov ax, 4
  11.     sub ax, bx
  12.     jns ii4
  13.     mov dx, -1
  14. ii4:
  15.    
  16.     mov cx, 5
  17.     idiv    cx

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


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

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

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

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

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

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