рднрд╛рдЧ Iрднрд╛рдЧ IIрднрд╛рдЧ IIITurboAssembler'e рдкрд░ рдПрдХ
рджрд┐рдорд╛рдЧреА рднрд╛рд╖рд╛ рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред
рд╕реНрдХреНрд░реАрди рдкрд░
data_arr array (рдЯреНрдпреВрд░рд┐рдВрдЧ рдорд╢реАрди рдХрд╛ "рдЯреЗрдк") рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝реЗрдВред
рдЪрд▓реЛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ
09h рдЗрдВрдЯрд░рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди
21h рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
.model tiny ; ascii-decoder.asm jumps .data data_arr DB 1,0,2,0,3,0,4,0,5,0,6,0,7,'$' ; .code ORG 100h start: ; mov AX, @data ; mov DS,AX ;;;;;;;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah INT 21h mov dx,offset data_arr ; mov ah,09h ; int 21h ;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah INT 21h mov AX, 4c00h ; int 21h end start
рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдо
рдбреЗрдЯрд╛_рд░ рдбреАрдмреА рд╕рд░рдгреА 1,0,2,0,3,0,4,0,5,5,0,6,6,7, '$' рддрддреНрд╡реЛрдВ рдХреЗ
рдПрдПрд╕рд╕реАрдЖрдИ -рдХреЛрдб рджреЗрдЦреЗрдВрдЧреЗ
ред
рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
div рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
Div рдХрдорд╛рдВрдб
NUMBER , рд░рдЬрд┐рд╕реНрдЯрд░
AX рдХреЛ
NUMBER рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░
AL рдореЗрдВ рдбрд┐рд╡реАрдЬрди рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ рднрд╛рдЧ рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рдФрд░
AH рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рд╢реЗрд╖ рднрд╛рдЧ (
NUMBER рдпрд╛ рддреЛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)
рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
.model tiny ; ascii-decoder.asm jumps .data data_arr DB 10,12,0,0,0,0,0,0,0,0,'$' ; .code ORG 100h start: ; mov AX, @data ; mov DS,AX ;;;;;;;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah INT 21h ;mov dx,offset data_arr ; ;mov ah,09h ; ;int 21h ;; sub AH, AH ; AH mov AL, data_arr ; mov BL, 10 ; div BL ; AL=, AH= mov BX,AX add BX,3030h mov AH,2 ; 21h mov DL,BL ; int 21h mov DL, BH ; int 21h ; sub AH, AH ; AH mov AL, data_arr+1 ; mov BL, 10 ; div BL ; AL=, AH= mov BX,AX add BX,3030h mov AH,2 ; 21h mov DL,BL ; int 21h mov DL, BH ; int 21h ;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah INT 21h mov AX, 4c00h ; int 21h end start
рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
рд▓реВрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдЙрдкрд╛рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ
рд╕реАрдПрдХреНрд╕ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдк рдореЗрдВ рд╣рдо рд╕рд░рдгреА рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
.model tiny ; ascii-decoder1.asm jumps .data data_arr DB 3,5,6,7,0,11,12,13,0,20,'$' ; i DB 0,'$' .code ORG 100h start: ; mov AX, @data ; mov DS,AX ;;;;;;;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah INT 21h ;mov dx,offset data_arr ; ;mov ah,09h ; ;int 21h mov CX, 0Ah _prev: ;; ; mov BL,i sub AH, AH ; AH mov AL, data_arr[BX] ; mov BL, 10 ; div BL ; AL=, AH= mov BX,AX add BX,3030h mov AH,2 ; 21h mov DL,BL ; int 21h mov DL, BH ; int 21h ; sub DL, DL int 21h ;;; sub BX,BX inc i ; mov BL, i loop _prev ;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah INT 21h mov AX, 4c00h ; int 21h end start
рдЕрдЧрд▓рд╛, рдПрдХ рд▓реВрдк рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
.model tiny jumps .data str_arr DB 256h DUP('$') 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 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 ; MOV DL,0Ah ; INT 21h ; ; output data_arr mov CX, 0Ah ; 10 sub AL,AL ; AL mov i, AL ; sub BX,BX ; BX _prev: ; incorrect 1st element sub AH, AH ; AH mov AL, data_arr[BX] ; ;mov AL, data_arr+1 mov BL, 10 ; div BL ; AL= AH= mov BX,AX add BX,3030h mov AH,2 ; 2 21h mov DL,BL ; int 21h mov DL, BH ; int 21h ; ( ) sub DL, DL int 21h ;;; sub BX,BX inc i ; mov BL, i loop _prev ;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah ; INT 21h ; mov AX, 4c00h ; int 21h end start
рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдЕрдм рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ

рдЪреВрдВрдХрд┐ рд╣рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
99 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
100 рдирдВрдмрд░ рдЧрд▓рдд рддрд░реАрдХреЗ
рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реЗрд╖ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдиреЗрд╕реНрдЯреЗрдб рдХреЛрд╖реНрдардХ
рдиреЗрд╕реНрдЯреЗрдб рдХреЛрд╖реНрдардХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рдЙрджреНрдШрд╛рдЯрди рдХреЛрд╖реНрдардХ, рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдмрдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбрд╛рд▓ рджреЗрдВрдЧреЗред
рд╣рдо рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВрдЧреЗред
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.
рдпрд╣рд╛рдВ рд╕реЗ рд▓реЗ
рдЧрдП ред
рдЖрдк
рдпрд╣рд╛рдВ рдпрд╛
рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдкреБрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдЬрдм
рдЖрдХрд╛рд░ рд╢реВрдиреНрдп рд╣реЛ, рддреЛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИред
procedure push(c : integer); begin a[size+1] := c; size := size + 1; end;
рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ "рд╕реНрдЯреИрдХ" рдЬреЛрдбрд╝реЗрдВред
Program bf5_stack; LABEL prev,next; var a : array[1..10] of integer; size : integer; data_arr:array[1..10] of integer; // str_arr: string; // i,j,k: integer; // 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; // i:=1; size := 0; { } //readln(str_arr); // //str_arr:='+++[>+++[>+<-]<-]'; // 3*3=9 str_arr:='+++[> +++[>+++[>+<-]<-] <-]'; //3^3=27; prev: if i>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]='>') then j:=j+1; if (str_arr[i]='<') then j:=j-1; if (str_arr[i]='.') then write(chr(data_arr[j])); // if (str_arr[i]='[') then Push(i); if (str_arr[i]=']') then begin Pop(); if (data_arr[j]>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.
ideone.comрдпрджрд┐ рд╣рдо рдПрдХ рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдкрддрд╛ рд╕реНрдЯреИрдХ рдкрд░ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЬрдм рд╣рдо рдПрдХ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рд╕реЗ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓ рдореЗрдВ рдорд╛рди рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рдУрдкрдирд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд▓реМрдЯ рдЖрддреЗ рд╣реИрдВред
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп / "рдорд╛рдирдХ" рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
bf51_stack.pas рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
"рдореБрдЦреНрдп рдЕрд╕реЗрдВрдмрд▓рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдХ рдЬреЛрдбрд╝реЗрдВ"
.model tiny ; bf7_stack_decoder.asm jumps .data str_arr DB 256h DUP('$') ; 256 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 ; 256 mov dx,OFFSET str_arr int 21h ;;; mov DL, str_arr ; DL 1 ;mov CX, 100h ; 256 prev: cmp DL, 24h ; '$' je exit_loop cmp DL, 2Bh ; + jne next ; , next mov BL, j ; BL inc data_arr[BX] ; , 1 next: cmp DL, 2Dh ; - jne next1 ; , next1 mov BL, j dec data_arr[BX] ;BX, Bl next1: cmp DL, 3Eh ; > jne next2 ; , next2 inc j ; , data_arr next2: cmp DL, 3Ch ; < jne next3 ; , next3 dec j ; , data_arr next3: cmp DL, 2Eh ; . jne next4 ; , next4 mov AH,2 ; , mov BL, j mov DL, data_arr[BX] int 21h next4: cmp DL, 5Bh ; [ jne next5 ; , next5 ;sub DX,DX mov AL, i ; push AX next5: cmp DL, 5Dh ; ] jne next6 ; , next6 sub AX,AX pop AX mov BL, j mov DL, data_arr[BX] cmp DL, 00 ; , data_arr jz next6 ; , mov i, AL ; i_stor i mov BL, i mov DL, str_arr[BX] jmp prev next6: inc i ; mov BL, i mov DL, str_arr[BX] jmp prev exit_loop: ; ascii- MOV AH,2 ; MOV DL,0Ah ; INT 21h ; ; output data_arr mov CX, 0Ah ; 10 sub AL,AL ; AL mov i, AL ; sub BX,BX ; BX _prev: ; incorrect 1st element sub AH, AH ; AH mov AL, data_arr[BX] ; ;mov AL, data_arr+1 mov BL, 10 ; div BL ; AL= AH= mov BX,AX add BX,3030h mov AH,2 ; 2 21h mov DL,BL ; int 21h mov DL, BH ; int 21h ; ( ) sub DL, DL int 21h ;;; sub BX,BX inc i ; mov BL, i loop _prev ;;;;;;;;;; MOV AH,2 ; MOV DL,0Ah ; INT 21h ; ;;;;;;;;;;;;;;; mov AX, 4c00h ; int 21h END start

рдЬреАрдердм рд╕реЗ
рд▓рд┐рдВрдХ рдХрд░реЗрдВред