Ввести с клавиатуры в hex- виде коды, вывести на экран сумму в 10-ой системе счисления - Assembler

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

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

Выдает не то что нужно,а задание гласит так:
Ввести с клавиатуры в hex- виде коды для занесения в регистры ВХ и СХ. Вывести на экран сумму содержимого этих регистров в десятичном виде
Листинг программы
  1. .386
  2. dseg segment use16
  3. txt1 db 13,10,'Type HEX: $'
  4. txt2 db 13,10,'Result..: $'
  5. dseg ends
  6. cseg segment use16
  7. assume cs:cseg,ds:dseg
  8. m1:
  9. mov cx,dseg
  10. mov ds,cx
  11. ;////ввод с клавы в bx
  12. xor bx,bx
  13. m3:
  14. mov ah,1
  15. int 21h
  16. cmp al,13
  17. je short stop
  18. sub al,30h
  19. cmp al,9
  20. jbe short m5
  21. sub al,11h
  22. cmp al,5
  23. jbe short m4
  24. sub al,20h
  25. m4:
  26. add al,10
  27. m5:
  28. shl bx,4
  29. or bl,al
  30. jmp short m3
  31. stop:
  32. ;////ввод с клавы в cx
  33. xor cx,cx
  34. m6:
  35. mov ah,1
  36. int 21h
  37. cmp al,13
  38. je short stop1
  39. sub al,30h
  40. cmp al,9
  41. jbe short m8
  42. sub al,11h
  43. cmp al,5
  44. jbe short m7
  45. sub al,20h
  46. m7:
  47. add al,10
  48. m8:
  49. shl cx,4
  50. or cl,al
  51. jmp short m6
  52. stop1: ;////сложение и результат в ax
  53. ret
  54. ;pop bx cx
  55. add bx,cx
  56. mov ax,bx
  57. ;////вывод в котором происходит непонятное
  58. pusha
  59. mov bx,10
  60. xor cx,cx
  61. isDiv:
  62. xor dx,dx
  63. movsx edx, dx
  64. div bx
  65. push dx
  66. inc cx
  67. or ax,ax
  68. jnz short isDiv
  69. isOut:
  70. pop ax
  71. add al,30h
  72. int 29h
  73. loop isOut
  74. popa
  75. ret
  76. exit:
  77. xor ax,ax
  78. int 16h
  79. int 20h
  80. cseg ends
  81. end m1

Решение задачи: «Ввести с клавиатуры в hex- виде коды, вывести на экран сумму в 10-ой системе счисления»

textual
Листинг программы
  1. model   small
  2. .data
  3. dbInp   db  10,13,'Enter HEX-code:$'
  4. dbOut   db  10,13,'Decimal result:$'
  5. dbErr   db  10,13,'Error overflow!$'
  6. .stack  100h
  7. .code
  8. start:  mov ax,@data
  9.     mov ds,ax
  10.     call    inpNum
  11.     mov bx,di
  12.     call    inpNum
  13.     mov cx,di
  14.     add bx,cx
  15.     mov ax,bx
  16.     call    outNum
  17.     mov ax,4C00h
  18.     int 21h
  19. ;
  20. inpNum: mov ah,9
  21.     lea dx,dbInp
  22.     int 21h
  23.     xor di,di
  24.     mov si,16
  25. @@01:   xor ax,ax
  26.     int 16h
  27.     mov ah,al
  28.     cmp al,13
  29.     jz  @@03
  30.     cmp al,'0'
  31.     jb  @@01
  32.     cmp al,'9'
  33.     jbe @@02
  34.     and al,223
  35.     mov ah,al
  36.     cmp al,'A'
  37.     jb  @@01
  38.     cmp al,'F'
  39.     ja  @@01
  40.     sub ah,7
  41. @@02:   sub ah,'0'
  42.     push    ax
  43.     int 29h
  44.     pop ax
  45.     mov al,ah
  46.     and ax,0fh
  47.     xchg    di,ax
  48.     xor dx,dx
  49.     mul si
  50.     add di,ax
  51.     or  dx,dx
  52.     jz  @@01
  53.     mov ah,9
  54.     lea dx,dbErr
  55.     int 21h
  56.     jmp inpNum
  57. @@03:   ret
  58. ;
  59. outNum: push    ax
  60.     mov ah,9
  61.     lea dx,dbOut
  62.     int 21h
  63.     pop ax
  64.     xor cx,cx
  65.     mov si,10
  66. @@04:   xor dx,dx
  67.     div si
  68.     push    dx
  69.     inc cx
  70.     or  ax,ax
  71.     jnz @@04
  72. @@05:   pop ax
  73.     or  al,'0'
  74.     int 29h
  75.     loop    @@05
  76.     ret
  77.     end start

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


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

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

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

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

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

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