fork download
  1. code segment
  2. assume CS:code, DS:data
  3. mainproc proc
  4. mov AX, data
  5. mov DS, AX
  6.  
  7. repeat:
  8. mov ah,01h
  9. int 21h
  10. call verification
  11. jc repeat
  12.  
  13. call tobin
  14. mov bh,al
  15.  
  16. repeat1:
  17. int 21h
  18. call verification
  19. jc repeat1
  20.  
  21.  
  22. call tobin
  23. mov bl,al
  24. cmp bh,bl
  25.  
  26. pushf
  27. pop bx
  28. test bx, 0000000010000000b ;sf
  29. mov ah,09h
  30. mov dx, offset sign
  31. int 21h
  32. mov ah,02h
  33. jnz sf_true
  34. jz sf_false
  35. sf_true_end:
  36. sf_false_end:
  37.  
  38. test bx, 0000100000000000b ;of
  39. mov ah,09h
  40. mov dx, offset over
  41. int 21h
  42. mov ah,02h
  43. jnz of_true
  44. jz of_false
  45. of_true_end:
  46. of_false_end:
  47. test bx, 0000000001000000b;zf
  48. mov ah,09h
  49. mov dx, offset zero
  50. int 21h
  51. mov ah,02h
  52. jnz zf_true
  53. jz zf_false
  54. zf_true_end:
  55. zf_false_end:
  56.  
  57. test bx, 0000000000000001b;cf
  58. mov ah,09h
  59. mov dx, offset carry
  60. int 21h
  61. mov ah,02h
  62. jnz cf_true
  63. jz cf_false
  64. cf_true_end:
  65. cf_false_end:
  66.  
  67. mov AX, 4C00h
  68. int 21h
  69. ;###################################################
  70. sf_true:
  71. mov dl,31h
  72. int 21h
  73. jmp sf_true_end
  74.  
  75. sf_false:
  76. mov dl,30h
  77. int 21h
  78. jmp sf_false_end
  79.  
  80. ;//////////////////////
  81.  
  82. of_true:
  83. mov dl,31h
  84. int 21h
  85. jmp of_true_end
  86.  
  87. of_false:
  88. mov dl,30h
  89. int 21h
  90. jmp of_false_end
  91.  
  92. ;//////////////////////
  93.  
  94. zf_true:
  95. mov dl,31h
  96. int 21h
  97. jmp zf_true_end
  98.  
  99. zf_false:
  100. mov dl,30h
  101. int 21h
  102. jmp zf_false_end
  103.  
  104. ;//////////////////////
  105.  
  106. cf_true:
  107. mov dl,31h
  108. int 21h
  109. jmp cf_true_end
  110.  
  111. cf_false:
  112. mov dl,30h
  113. int 21h
  114. jmp cf_false_end
  115.  
  116. verification proc
  117. clc ;убираем 0 из sf
  118. cmp al, 30h ;проверяем на al>30h, если al<0(с=1,s=1) ошибка
  119. js error ;ошибка
  120.  
  121. cmp al,39h ;проверка al<39h, если al<0(с=1,s=1) ошибка, если al>0 - либо ошибка, либо символ
  122. jbe digit;вывод - число
  123. ;проверка на символ
  124. cmp al, 41h;проверяем на al<41h, если al<0(c=1,s=1) ошибка
  125. js error
  126.  
  127. cmp al, 46h;проверяем на al<46h, если al<0(c=1,s=1) - символ, если al>0 - ошибка
  128. jbe valid
  129.  
  130. jmp error
  131. digit: mov cx,1;вывод - число
  132. clc
  133. ret
  134. valid: mov cx,2;вывод - символ
  135. clc
  136. ret
  137. error: stc;вывод - ошибка
  138. ret
  139. verification endp
  140.  
  141.  
  142.  
  143. tobin proc
  144. cmp cx, 2
  145.  
  146. js todigit;для чисел
  147. jz tovalid;для символов
  148. endd:
  149. endv:
  150. ret
  151.  
  152. todigit:
  153. sub al,30h
  154. jmp endd
  155.  
  156. tovalid:
  157. sub al,41h
  158. add al,0Ah
  159. jmp endv
  160. tobin endp
  161.  
  162. mainproc endp
  163. code ends
  164.  
  165. data segment
  166. carry db 10,13,'CF=$'
  167. over db 10,13,'OF=$'
  168. sign db 10,13,'SF=$'
  169. zero db 10,13,'ZF=$'
  170. data ends
  171.  
  172. stk segment stack
  173. db 256 dup (?)
  174. stk ends
  175. end mainproc
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.s: Assembler messages:
prog.s:0: Warning: end of file not at end of a line; newline inserted
prog.s:1: Error: no such instruction: `code segment'
prog.s:2: Error: no such instruction: `assume CS:code,DS:data'
prog.s:3: Error: no such instruction: `mainproc proc'
prog.s:4: Error: too many memory references for `mov'
prog.s:5: Error: too many memory references for `mov'
prog.s:8: Error: too many memory references for `mov'
prog.s:9: Error: junk `h' after expression
prog.s:9: Error: suffix or operands invalid for `int'
prog.s:14: Error: too many memory references for `mov'
prog.s:17: Error: junk `h' after expression
prog.s:17: Error: suffix or operands invalid for `int'
prog.s:23: Error: too many memory references for `mov'
prog.s:24: Error: too many memory references for `cmp'
prog.s:28: Error: too many memory references for `test'
prog.s:28: Error: no such instruction: `sf'
prog.s:29: Error: too many memory references for `mov'
prog.s:30: Error: too many memory references for `mov'
prog.s:31: Error: junk `h' after expression
prog.s:31: Error: suffix or operands invalid for `int'
prog.s:32: Error: too many memory references for `mov'
prog.s:38: Error: too many memory references for `test'
prog.s:38: Error: no such instruction: `of'
prog.s:39: Error: too many memory references for `mov'
prog.s:40: Error: too many memory references for `mov'
prog.s:41: Error: junk `h' after expression
prog.s:41: Error: suffix or operands invalid for `int'
prog.s:42: Error: too many memory references for `mov'
prog.s:47: Error: too many memory references for `test'
prog.s:47: Error: no such instruction: `zf'
prog.s:48: Error: too many memory references for `mov'
prog.s:49: Error: too many memory references for `mov'
prog.s:50: Error: junk `h' after expression
prog.s:50: Error: suffix or operands invalid for `int'
prog.s:51: Error: too many memory references for `mov'
prog.s:57: Error: too many memory references for `test'
prog.s:57: Error: no such instruction: `cf'
prog.s:58: Error: too many memory references for `mov'
prog.s:59: Error: too many memory references for `mov'
prog.s:60: Error: junk `h' after expression
prog.s:60: Error: suffix or operands invalid for `int'
prog.s:61: Error: too many memory references for `mov'
prog.s:67: Error: too many memory references for `mov'
prog.s:68: Error: junk `h' after expression
prog.s:68: Error: suffix or operands invalid for `int'
prog.s:71: Error: too many memory references for `mov'
prog.s:72: Error: junk `h' after expression
prog.s:72: Error: suffix or operands invalid for `int'
prog.s:76: Error: too many memory references for `mov'
prog.s:77: Error: junk `h' after expression
prog.s:77: Error: suffix or operands invalid for `int'
prog.s:83: Error: too many memory references for `mov'
prog.s:84: Error: junk `h' after expression
prog.s:84: Error: suffix or operands invalid for `int'
prog.s:88: Error: too many memory references for `mov'
prog.s:89: Error: junk `h' after expression
prog.s:89: Error: suffix or operands invalid for `int'
prog.s:95: Error: too many memory references for `mov'
prog.s:96: Error: junk `h' after expression
prog.s:96: Error: suffix or operands invalid for `int'
prog.s:100: Error: too many memory references for `mov'
prog.s:101: Error: junk `h' after expression
prog.s:101: Error: suffix or operands invalid for `int'
prog.s:107: Error: too many memory references for `mov'
prog.s:108: Error: junk `h' after expression
prog.s:108: Error: suffix or operands invalid for `int'
prog.s:112: Error: too many memory references for `mov'
prog.s:113: Error: junk `h' after expression
prog.s:113: Error: suffix or operands invalid for `int'
prog.s:116: Error: no such instruction: `verification proc'
prog.s:117: Error: invalid character (0xd1) in mnemonic
prog.s:118: Error: too many memory references for `cmp'
prog.s:118: Error: invalid character (0xd0) in mnemonic
prog.s:119: Error: invalid character (0xd0) in mnemonic
prog.s:121: Error: too many memory references for `cmp'
prog.s:121: Error: invalid character (0xd0) in mnemonic
prog.s:122: Error: invalid character (0xd0) in mnemonic
prog.s:123: Error: invalid character (0xd0) in mnemonic
prog.s:124: Error: too many memory references for `cmp'
prog.s:124: Error: invalid character (0xd0) in mnemonic
prog.s:127: Error: too many memory references for `cmp'
prog.s:127: Error: invalid character (0xd0) in mnemonic
prog.s:131: Error: too many memory references for `mov'
prog.s:131: Error: invalid character (0xd0) in mnemonic
prog.s:134: Error: too many memory references for `mov'
prog.s:134: Error: invalid character (0xd0) in mnemonic
prog.s:137: Error: invalid character (0xd0) in mnemonic
prog.s:139: Error: no such instruction: `verification endp'
prog.s:143: Error: no such instruction: `tobin proc'
prog.s:144: Error: too many memory references for `cmp'
prog.s:146: Error: invalid character (0xd0) in mnemonic
prog.s:147: Error: invalid character (0xd0) in mnemonic
prog.s:153: Error: too many memory references for `sub'
prog.s:157: Error: too many memory references for `sub'
prog.s:158: Error: too many memory references for `add'
prog.s:160: Error: no such instruction: `tobin endp'
prog.s:162: Error: no such instruction: `mainproc endp'
prog.s:163: Error: no such instruction: `code ends'
prog.s:165: Error: no such instruction: `data segment'
prog.s:166: Error: no such instruction: `carry db 10,13,67F=$10over db 10,13,79F=$10sign db 10,13,83F=$10zero db 10,13,90F=$10data ends'
prog.s:168: Error: no such instruction: `stk segment stack'
prog.s:169: Error: no such instruction: `db 256 dup (?)'
prog.s:170: Error: no such instruction: `stk ends'
prog.s:171: Error: no such instruction: `end mainproc'
stdout
Standard output is empty