Перевод чисел в различные системы счисления — Pascal(Паскаль)

program per;
label 1,2,3;
var k:char;
 i,j,b:byte;
 c:word;
 sc:array [1..16] of byte;
 vs:array [1..16] of char;

procedure goto_xy(x,y:byte); assembler;
asm
  mov ah,2
  xor bh,bh
  mov dh,y
  mov dl,x
  dec dh
  dec dl
  int 10h
end;

procedure clrscreen; assembler;
asm
  mov ax,600h
  mov bh,7
  xor cx,cx
  mov dx,184fh
  int 10h
  mov ah,2
  xor bh,bh
  xor dx,dx
  int 10h
end;

begin
  2: clrscreen; write('Введите число [0..65535]: '); readln(c);
  1: goto_xy(1,2); write('Введите основание системы счисления: '); readln(b);
  if (b<2) or (b>16) then goto 1;
  for i:=1 to 16 do sc[i]:=0; i:=0;
  repeat
    inc(i); sc[i]:=c mod b; c:=c div b
  until c<1;
  for j:=1 to 16 do
  case sc[j] of
    0..9:vs[j]:=chr(sc[j]+48);
    10..15:vs[j]:=chr(sc[j]+87)
  end;
  for j:=i downto 1 do write(vs[j]);
  3: goto_xy(1,4); write('Продолжим, (Y/N)? '); readln(k);
  case k of
    'Y','y': goto 2;
    'N','n': halt
    else goto 3
  end
end.

Leave a Comment

19 + = 20