Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Natali13
1 / 1 / 1
Регистрация: 14.12.2014
Сообщений: 49
1

нужно написать комментарии к программе(программа с вставками ассемблера)

07.12.2015, 20:12. Просмотров 240. Ответов 2
Метки нет (Все метки)

нужно написать комментарии к программе(программа с вставками ассемблера)! Ассемблер не знаю, поэтому у меня появилась такая проблема! Очень нужна помощь в кратчайшие сроки!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
uses crt;
 
function ifPressedKey(key:Byte):Byte;
var
  res,ah_:Byte;
label
  yes, no, ex;
begin
  asm
    xor ax,ax
    int 16h
    cmp al, 0
    je no
    cmp ah,key
    je yes
    no:
    mov res, 0
    jmp ex
    yes:
    mov res, 1
    ex:
  end;
  ifPressedKey := res;
end;
 
procedure flagStatus(var shiftStatus:byte; var extShiftStatus:byte);
var 
  shS, extShS:byte;
begin
  asm
    mov ah, 12h
    int 16h
    mov shS, al
    mov extShS, ah
  end;
  shiftStatus:=shS;
  extShiftStatus:=extShS;
end;
 
function decToBin(n:Byte):string;
const 
 c:array[0..1] of char = ('0','1');
var
  res:string;
 
function addZero(st:string; n:integer):string;
 var s:string;
     i:integer;
begin
  s:='';
  for i:=length(st)+1 to n do
    s:=s+'0';
  addZero:=s;
end;
 
begin
  res:='';
    while n<>0 do
    begin
      res:=c[n mod 2] + res;
      n:= n div 2;
    end;
  decToBin:= addZero(res,8)+res;
end;
 
var 
  shS, extShS:byte;
begin
  clrscr;
  while true do
    if ifPressedKey(48) = 1 then
      begin
        flagStatus(shS, extShS);
        writeln('Shift Status: ',decToBin(shS),
           ' Extended Shift Status: ',decToBin(extShS) );
      end
      else
      begin
        writeln('error key');
        break;
      end;
  readln;
end.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2015, 20:12
Ответы с готовыми решениями:

Написать комментарии к программе.
Народ помогите плз напишите коментарии к проге все если можно program trianglepascal; uses crt;...

Написать комментарии к программе
Сформировать квадратную матрицу порядка n по заданному образцу n 0 0 ... 0 0 0 n-1 n 0 ... 0 0 0...

Написать комментарии к программе
uses crt; var s,sc: string; i,k: byte; begin write('s='); readln(s); for i:=1 to...

Написать комментарии к программе. (всего к 5-ти с)
Ребят, помогите написать подробные комментарии с 10-ой по 15-ую строку. А то я программу нашел.. а...

Написать описание и комментарии к программе
var x1,y1,x,y:real; s,r:real; begin readln(x,y); readln(x1,y1); if(y&lt;=sqrt(4-sqrt(x))) then...

2
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5253 / 3115 / 2329
Регистрация: 22.11.2013
Сообщений: 8,738
08.12.2015, 14:47 2
Поскольку затруднения в ассемблере, комментирую только его:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
function PressedKey(key: Byte): Boolean; assembler;
asm { результат в AL }
  xor ax,ax  { AX:=0 }
  int 16h    { читаем клавишу, [url]http://www.ctyme.com/intr/rb-1754.htm[/url] }
  or  al,al  { AL = 0 ? }
  jz  @0     { да, выходим }
  xor al,al  { AL:=0 }
  cmp ah,key { AH = key ? }
  jne @0     { нет, выходим }
  inc al     { вернем True }
@0:
end;
 
procedure FlagStatus(var Shifts, ExtShifts: Byte); assembler;
asm
  mov ah,12h { AH:=$12 }
  int 16h    { получаем состояние, [url]http://www.ctyme.com/intr/rb-1773.htm[/url] }
  les di,Shifts    { адрес Shifts в es:di }
  mov es:[di],al   { пишем флаги по адресу es:di }
  les di,ExtShifts { адрес ExtShifts в es:di }
  mov es:[di],ah   { пишем расш. флаги по адресу es:di }
end;
 
function decToBin(n: Byte): String;
var
  s: String;
  i: Integer;
begin
  s[0]:=#8;
  for i:=8 downto 1 do begin
    s[i]:=Chr(Ord('0')+n mod 2);
    n:=n div 2;
  end;
  decToBin:=s;
end;
 
var 
  s, es: Byte;
begin
  while True do
    if PressedKey(48) then begin {нажата клавиша b}
      flagStatus(s, es);
      WriteLn('Shift Status: ',decToBin(s), ' Extended Shift Status: ',decToBin(es));
    end else begin
      Writeln('error key');
      Break;
    end;
  Write('Press Enter to exit...'); ReadLn;
end.
INT 16h, AH=00h http://www.ctyme.com/intr/rb-1754.htm
INT 16h, AH=12h http://www.ctyme.com/intr/rb-1773.htm

Добавлено через 4 минуты
На самом деле процедура FlagStatus не нужна, можно было:
Pascal
1
2
3
4
5
6
7
var
  kbFlags: Byte absolute $40:$17;
  kbEFlags: Byte absolute $40:$18;
...
  if PressedKey(48) then
    WriteLn('Shift Status: ',DecToBin(kbFlags),' Extended Shift Status: ',decToBin(kbEFlags))
...
1
Natali13
1 / 1 / 1
Регистрация: 14.12.2014
Сообщений: 49
13.12.2015, 18:33  [ТС] 3
спасибо большое!
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2015, 18:33

Написать комментарии к готовой программе
Сам сделать не могу,зато нашел сделанную. Но без комментариев не сдать.. Даны действительные...

Написать комментарии к программе. (всего к 6-ти строкам)
Ребят, помогите написать подробные комментарии с 9-ой по 14-ую строку. А то я программу нашел.. а...

НУжно написать комментарии к каждой строке
uses crt; var n,i,j,n1,np,k:longint; s:longint; key:char; e:integer; function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.