{"id":290909,"date":"2018-10-17T01:25:02","date_gmt":"2018-10-16T21:25:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=290909"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=290909","title":{"rendered":"\u041d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 Brainfuck. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u2026"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><a href=\"https:\/\/habr.com\/post\/326078\/\">\u0427\u0430\u0441\u0442\u044c I<\/a><br \/>  <a href=\"https:\/\/habr.com\/post\/423121\/\">\u0427\u0430\u0441\u0442\u044c II<\/a><br \/>  <a href=\"https:\/\/habr.com\/post\/426649\/\">\u0427\u0430\u0441\u0442\u044c III<\/a><\/p>\n<p>  \u041f\u0438\u0448\u0435\u043c brainfuck \u043d\u0430 TurboAssembler&#8217;e.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u044b\u0432\u043e\u0434 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <b>data_arr<\/b> (\u00ab\u043b\u0435\u043d\u0442\u0443\u00bb \u043c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.<br \/>  \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0443\u044e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 09h \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h.  <\/p>\n<pre><code>.model tiny                 ; ascii-decoder.asm jumps .data  data_arr DB 1,0,2,0,3,0,4,0,5,0,6,0,7,'$' ; \u0434\u0430\u043d\u043d\u044b\u0435  .code ORG    100h start: ;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435   mov AX, @data          ; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445                                          mov DS,AX ;;;;;;;;;;;;;;;;  MOV    AH,2              ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h  mov dx,offset data_arr     ; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 mov ah,09h\t\t            ; \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 int 21h         ;;;;;;;;;;  MOV    AH,2       ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h             mov AX, 4c00h      ; \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b    int 21h  end start <\/code><\/pre>\n<p>  \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c ascii-\u043a\u043e\u0434\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <b>data_arr DB 1,0,2,0,3,0,4,0,5,0,6,0,7,&#8217;$&#8217;<\/b> <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/02\/t-\/l6\/02t-l68c--qa62jikrhc6vuuw3y.jpeg\"> <br \/>  <a name=\"habracut\"><\/a><br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0447\u0438\u0441\u0435\u043b, \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0440\u0430\u0442\u043e\u0440 <b>div<\/b>.<\/p>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <b>div \u0427\u0418\u0421\u041b\u041e<\/b> \u0434\u0435\u043b\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <b>AX<\/b> \u043d\u0430 <b>\u0427\u0418\u0421\u041b\u041e<\/b> \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0446\u0435\u043b\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 <b>AL<\/b>, \u0430 \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 <b>AH<\/b> (<b>\u0427\u0418\u0421\u041b\u041e\u041c<\/b> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u043b\u0438\u0431\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f)<\/p>\n<p>  \u0412\u044b\u0432\u0435\u0434\u0435\u043c 1\u044b\u0439 \u0438 2\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430  <\/p>\n<pre><code>.model tiny                 ; ascii-decoder.asm jumps .data  data_arr DB 10,12,0,0,0,0,0,0,0,0,'$' ; \u0434\u0430\u043d\u043d\u044b\u0435  .code ORG    100h start: ;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435   mov AX, @data          ; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445                                          mov DS,AX ;;;;;;;;;;;;;;;;  MOV    AH,2              ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h  ;mov dx,offset data_arr  \t; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 ;mov ah,09h\t\t            ; \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 ;int 21h          ;;\u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u043e\u0435 \u0447\u0438\u0441\u043b\u043e sub AH, AH          ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AH mov AL, data_arr    ; \u0434\u0435\u043b\u0438\u043c\u043e\u0435 mov BL, 10          ; \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c div BL              ; \u0442\u0435\u043f\u0435\u0440\u044c \u0432 AL=\u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0432 AH=\u0435\u0434\u0438\u043d\u0438\u0446\u044b mov BX,AX add BX,3030h mov AH,2            ; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h  mov DL,BL           ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434  int 21h  mov DL, BH          ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434 int 21h ;\u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0435 \u0447\u0438\u0441\u043b\u043e sub AH, AH           ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AH mov AL, data_arr+1   ; \u0434\u0435\u043b\u0438\u043c\u043e\u0435 mov BL, 10           ; \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c div BL               ; \u0442\u0435\u043f\u0435\u0440\u044c \u0432 AL=\u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0432 AH=\u0435\u0434\u0438\u043d\u0438\u0446\u044b mov BX,AX add BX,3030h mov AH,2            ; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h  mov DL,BL           ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434  int 21h  mov DL, BH          ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434 int 21h ;;;;;;;;;;  MOV    AH,2       ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h             mov AX, 4c00h      ; \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b    int 21h  end start <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <b>loop<\/b>.<br \/>  \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <b>CX<\/b> \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u0440\u0430\u0432\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0430\u043a\u0442\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043a \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <b>i<\/b>.  <\/p>\n<pre><code>.model tiny                 ; ascii-decoder1.asm jumps .data  data_arr DB 3,5,6,7,0,11,12,13,0,20,'$' ; \u0434\u0430\u043d\u043d\u044b\u0435  i DB 0,'$'   .code ORG    100h start: ;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435   mov AX, @data               ; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445                                          mov DS,AX ;;;;;;;;;;;;;;;;  MOV    AH,2                  ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h  ;mov dx,offset data_arr       ; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 ;mov ah,09h\t\t      ; \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 ;int 21h                          mov CX, 0Ah _prev: ;;\u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0447\u0438\u0441\u043b\u043e ; mov BL,i  sub AH, AH             ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AH  mov AL, data_arr[BX]    ; \u0434\u0435\u043b\u0438\u043c\u043e\u0435  mov BL, 10             ; \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c  div BL                 ; \u0442\u0435\u043f\u0435\u0440\u044c \u0432 AL=\u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0432 AH=\u0435\u0434\u0438\u043d\u0438\u0446\u044b  mov BX,AX  add BX,3030h  mov AH,2            ; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h   mov DL,BL           ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434   int 21h   mov DL, BH          ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u044f\u0434  int 21h ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b sub DL, DL           int 21h  ;;; sub BX,BX inc i                ; \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a           mov BL, i loop _prev ;;;;;;;;;;  MOV    AH,2       ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h             mov AX, 4c00h      ; \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b    int 21h  end start <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0446\u0438\u043a\u043b, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0447\u0438\u0441\u0435\u043b, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.  <\/p>\n<pre><code>.model tiny jumps .data  str_arr DB 256h DUP('$')\t          data_arr DB 0,0,0,0,0,0,0,0,0,0,'$'     i DB 0,'$'                             j DB 0,'$'                             i_stor DB 0,'$'  .code ORG    100h start:    mov AX, @data                                                 mov DS,AX   ;;;   mov ah, 3fh             mov cx, 100h\t          mov dx,OFFSET str_arr   int 21h   ;;;                mov DL, str_arr       prev:  cmp DL, 24h            je  exit_loop                     cmp DL, 2Bh                                  jne next               mov BL, j                          inc data_arr[BX]      next:   cmp DL, 2Dh                                  jne next1               mov BL, j   dec data_arr[BX]      next1:   cmp DL, 3Eh           jne next2              inc j                next2:   cmp DL, 3Ch           jne next3              dec j                next3:   cmp DL, 2Eh           jne next4             mov AH,2              mov BL, j  mov DL, data_arr[BX]  int 21h next4:  cmp DL, 5Bh           jne next5             ;mov BL, j  ;mov DL, data_arr[BX]  ;cmp DL, 00              ;jz next5              mov DL, i              mov i_stor, Dl       next5:  cmp DL, 5Dh           jne next6             mov BL, j  mov DL, data_arr[BX]  cmp DL, 00              jz next6              mov DL, i_stor         mov i, DL             next6:  inc i                 mov BL, i  mov DL, str_arr[BX]  ; loop prev            jmp prev  exit_loop:   ;;;;;;;;;;;;;;;;  MOV    AH,2         ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  MOV    DL,0Ah       ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  INT    21h          ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  ; output data_arr     mov CX, 0Ah          ; 10 \u0442\u0430\u043a\u0442\u043e\u0432 sub AL,AL            ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AL mov i, AL            ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a sub BX,BX            ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c BX _prev: ; incorrect 1st element  sub AH, AH             ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AH  mov AL, data_arr[BX]   ; \u0434\u0435\u043b\u0438\u043c\u043e\u0435  ;mov AL, data_arr+1   mov BL, 10             ; \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c  div BL                 ; \u0447\u0430\u0441\u0442\u043d\u043e\u0435  AL=\u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438 AH=\u0435\u0434\u0438\u043d\u0438\u0446\u044b  mov BX,AX  add BX,3030h  mov AH,2            ; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 2 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h   mov DL,BL           ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0435\u0441\u044f\u0442\u043a\u0438    int 21h   mov DL, BH          ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0435\u0434\u0438\u043d\u0438\u0446\u044b  int 21h                ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043f\u0440\u043e\u0431\u0435\u043b (\u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b) sub DL, DL           int 21h  ;;; sub BX,BX inc i                ; \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 mov BL, i loop _prev ;;;;;;;;;;  MOV    AH,2       ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  MOV    DL,0Ah     ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  INT    21h        ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430      mov AX, 4c00h     ; \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b  int 21h  end start <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c HelloWorld \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vc\/ff\/xo\/vcffxofxfh7sqytb8z3ceazqdm4.jpeg\"><br \/>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0447\u0438\u0441\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 <b>99<\/b>, \u0442\u043e \u0447\u0438\u0441\u043b\u043e <b>100<\/b> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<h4>\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438<\/h4>\n<p>  \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u0441\u0442\u044d\u043a, \u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438\u0437 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>  \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c \u043d\u0430 \u041f\u0430\u0441\u043a\u0430\u043b\u0435.  <\/p>\n<pre><code>var  a : array[1..10] of integer;  size : integer;  procedure push(c : integer);  begin   size := size + 1;   a[size] := c;   end;    procedure pop;  begin   size := size - 1;  end;  begin   size := 0;    Push(1);   writeln(a[size]);   Push(2);   writeln(a[size]);   Push(3);   writeln(a[size]);   Pop();   writeln(a[size]);   Pop();   writeln(a[size]); end. <\/code><\/pre>\n<p>  \u0412\u0437\u044f\u043b <a href=\"http:\/\/programmado.ru\/56-stack.html\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a><br \/>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.codechef.com\/ide\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438\u043b\u0438 <a href=\"http:\/\/www.compileonline.com\/compile_pascal_online.php\">\u0437\u0434\u0435\u0441\u044c<\/a>. <\/p>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 <b>push<\/b> \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 <b>size<\/b> \u0440\u0430\u0432\u043d\u043e\u043c \u043d\u0443\u043b\u044e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.   <\/p>\n<pre><code>procedure push(c : integer);  begin   a[size+1] := c;    size := size + 1;  end; <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u00ab\u0441\u0442\u044d\u043a\u00bb \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.  <\/p>\n<pre><code>Program bf5_stack;    LABEL prev,next; var  a : array[1..10] of integer;  size : integer;  data_arr:array[1..10] of integer;    \/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0430\u043d\u043d\u044b\u0445  str_arr: string;                     \/\/ \u043a\u043e\u043c\u0430\u043d\u0434\u044b    i,j,k: integer;                      \/\/ \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430  i_stor: integer;   \/\/Stack procedure push(c : integer);  begin   a[size+1] := c;    size := size + 1;  end;    procedure pop;  begin   size := size - 1;  end; {---------------------------------------------------} begin  j:=1;   \/\/ \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b  i:=1;  size := 0; {\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0435\u043a \u043f\u0443\u0441\u0442}  \/\/readln(str_arr);       \/\/\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443  \/\/str_arr:='+++[&gt;+++[&gt;+&lt;-]&lt;-]'; \/\/2*2=4  str_arr:='+++[&gt; +++[&gt;+++[&gt;+&lt;-]&lt;-] &lt;-]'; \/\/3^3=9;    prev:  if i&gt;length(str_arr) then goto next;      if (str_arr[i]='+') then data_arr[j]:= data_arr[j]+1;     if (str_arr[i]='-') then data_arr[j]:= data_arr[j]-1;     if (str_arr[i]='&gt;') then j:=j+1;     if (str_arr[i]='&lt;') then j:=j-1;     if (str_arr[i]='.') then write(chr(data_arr[j]));     \/\/ \u0441\u043a\u043e\u0431\u043a\u0438     if (str_arr[i]='[') then Push(i);                if (str_arr[i]=']') then       begin       Pop();       if (data_arr[j]&gt;0) then         begin         i := a[size+1];         goto prev;        end;       end;  i:=i+1;  goto prev;  next: for k:=1 to 10 do begin  write(data_arr[k]); write(' '); end; end. <\/code><\/pre>\n<p>  <a href=\"https:\/\/ideone.com\/DhUKdt\">ideone.com<\/a><br \/>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u0431 \u0441\u043a\u043e\u0431\u043a\u0443, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0435\u0451 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u0442\u044d\u043a, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u043a\u043e\u0431\u043a\u0443, \u0442\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0435\u0451 \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u043b\u044f, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u043a\u043e\u0431\u043a\u0443.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\/\u00ab\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u00bb \u0441\u0442\u044d\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 <a href=\"https:\/\/github.com\/demsp\/bf\/blob\/master\/Pascal\/bf51_stack.pas\">bf51_stack.pas<\/a><\/p>\n<p>  \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u043c\u00bb \u0441\u0442\u044d\u043a \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435  <\/p>\n<pre><code>.model tiny                       ; bf7_stack_decoder.asm                       jumps .data  str_arr DB 256h DUP('$')\t; \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 256 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432  data_arr DB 0,0,0,0,0,0,0,0,0,0,'$'  ; \u0434\u0430\u043d\u043d\u044b\u0435  i DB 0,'$'                              ;\u0438\u043d\u0434\u0435\u043a\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043a\u043e\u043c\u0430\u043d\u0434   j DB 0,'$'                            ;\u0438\u043d\u0434\u0435\u043a\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u0430\u043d\u043d\u044b\u0445  i_stor DB 0,'$'  .code ORG    100h start:  ;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435   mov AX,@data          ; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445                                          mov DS,AX   ;;;   mov ah, 3fh          ; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0432\u043e\u0434\u0430   mov cx, 100h\t        ; 256 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432   mov dx,OFFSET str_arr   int 21h   ;;;                mov DL, str_arr      ; \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432 DL 1\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443    ;mov CX, 100h        ; 256 \u0442\u0430\u043a\u0442\u043e\u0432 prev:  cmp DL, 24h ; \u0441\u0438\u043c\u0432\u043e\u043b '$'  je  exit_loop  cmp DL, 2Bh         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 +                          jne next            ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next    mov BL, j           ; \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432 BL \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u0430\u043d\u043d\u044b\u0445               inc data_arr[BX]    ; \u0434\u0430, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c  \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u044f\u0447\u0435\u0439\u043a\u0435 \u043d\u0430 1   next:   cmp DL, 2Dh         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 -                          jne next1           ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next1    mov BL, j   dec data_arr[BX]    ;BX, \u043d\u043e \u043d\u0435 Bl  next1:   cmp DL, 3Eh         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 &gt;  jne next2           ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next2    inc j               ; \u0434\u0430, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 data_arr next2:   cmp DL, 3Ch         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 &lt;  jne next3           ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next3    dec j               ; \u0434\u0430, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 data_arr next3:   cmp DL, 2Eh         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 .  jne next4           ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next4    mov AH,2            ; \u0434\u0430, \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044f\u0447\u0435\u0439\u043a\u0438  mov BL, j  mov DL, data_arr[BX]  int 21h next4:  cmp DL, 5Bh         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 [  jne next5           ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next5  ;sub DX,DX  mov AL, i           ; \u0438\u043d\u0430\u0447\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c  push AX  next5:  cmp DL, 5Dh         ; \u044f\u0447\u0435\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 ]  jne next6           ; \u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 next6  sub AX,AX  pop AX  mov BL, j  mov DL, data_arr[BX]  cmp DL, 00          ; \u0434\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 data_arr \u043d\u0430 \u043d\u043e\u043b\u044c    jz next6            ; \u0435\u0441\u043b\u0438 \u043d\u043e\u043b\u044c, \u043f\u0440\u044b\u0433\u0430\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435  mov i, AL           ; \u0432 i_stor \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 i  mov BL, i  mov DL, str_arr[BX]     jmp prev next6:  inc i               ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435  mov BL, i  mov DL, str_arr[BX]     jmp prev  exit_loop:    ;\u0412\u044b\u043e\u0434 ascii-\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0447\u0438\u0441\u0435\u043b  MOV    AH,2         ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  MOV    DL,0Ah       ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  INT    21h          ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  ; output data_arr     mov CX, 0Ah          ; 10 \u0442\u0430\u043a\u0442\u043e\u0432 sub AL,AL            ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AL mov i, AL            ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a sub BX,BX            ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c BX _prev: ; incorrect 1st element  sub AH, AH             ; \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c AH  mov AL, data_arr[BX]   ; \u0434\u0435\u043b\u0438\u043c\u043e\u0435  ;mov AL, data_arr+1   mov BL, 10             ; \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c  div BL                 ; \u0447\u0430\u0441\u0442\u043d\u043e\u0435  AL=\u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438 AH=\u0435\u0434\u0438\u043d\u0438\u0446\u044b  mov BX,AX  add BX,3030h  mov AH,2            ; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 2 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h   mov DL,BL           ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0435\u0441\u044f\u0442\u043a\u0438    int 21h   mov DL, BH          ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0435\u0434\u0438\u043d\u0438\u0446\u044b  int 21h                ; \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043f\u0440\u043e\u0431\u0435\u043b (\u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b) sub DL, DL           int 21h  ;;; sub BX,BX inc i                ; \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 mov BL, i loop _prev ;;;;;;;;;;  MOV    AH,2       ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  MOV    DL,0Ah     ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430  INT    21h        ; \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430   ;;;;;;;;;;;;;;;          mov AX, 4c00h      ; \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b    int 21h  END    start <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/w6\/-c\/nm\/w6-cnm7x-fq-lk3zironmsym0wg.jpeg\"><\/p>\n<p>  <a href=\"https:\/\/github.com\/demsp\/bf\">\u0421\u0441\u044b\u043b\u043a\u0430<\/a> \u043d\u0430 github.<\/div>\n<p>        <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/post\/426649\/\"> https:\/\/habr.com\/post\/426649\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\"><a href=\"https:\/\/habr.com\/post\/326078\/\">\u0427\u0430\u0441\u0442\u044c I<\/a><br \/>  <a href=\"https:\/\/habr.com\/post\/423121\/\">\u0427\u0430\u0441\u0442\u044c II<\/a><br \/>  <a href=\"https:\/\/habr.com\/post\/426649\/\">\u0427\u0430\u0441\u0442\u044c III<\/a><\/p>\n<p>  \u041f\u0438\u0448\u0435\u043c brainfuck \u043d\u0430 TurboAssembler&#8217;e.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u044b\u0432\u043e\u0434 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <b>data_arr<\/b> (\u00ab\u043b\u0435\u043d\u0442\u0443\u00bb \u043c\u0430\u0448\u0438\u043d\u044b \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430) \u043d\u0430 \u044d\u043a\u0440\u0430\u043d.<br \/>  \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0443\u044e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 09h \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f 21h.  <\/p>\n<pre><code>.model tiny                 ; ascii-decoder.asm jumps .data  data_arr DB 1,0,2,0,3,0,4,0,5,0,6,0,7,'$' ; \u0434\u0430\u043d\u043d\u044b\u0435  .code ORG    100h start: ;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435   mov AX, @data          ; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445                                          mov DS,AX ;;;;;;;;;;;;;;;;  MOV    AH,2              ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h  mov dx,offset data_arr     ; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 mov ah,09h\t\t            ; \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 int 21h         ;;;;;;;;;;  MOV    AH,2       ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443  MOV    DL,0Ah       INT    21h             mov AX, 4c00h      ; \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b    int 21h  end start <\/code><\/pre>\n<p>  \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c ascii-\u043a\u043e\u0434\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <b>data_arr DB 1,0,2,0,3,0,4,0,5,0,6,0,7,&#8217;$&#8217;<\/b> <br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/02\/t-\/l6\/02t-l68c--qa62jikrhc6vuuw3y.jpeg\">   <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-290909","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290909","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=290909"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/290909\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=290909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=290909"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=290909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}