Контрольная работа по ASM / Отчёт по КР
.docxКонтрольная работа
на тему: ”Изучение встроенного ассемблера в Turbo pascal”.
Выполнил: Железкин М.Д. студент гр. ПО-41.
Задание: Если элементы массива D[1..5] равны соответственно 4,1,5,3,2, то значение выражения D[D[3]]-D[D[5]] равно?
Код программы на языке Turbo pascal:
program KP; var i:byte; D: array [1..5] of byte; begin Writeln('Vvedite massiv D=(4,1,5,3,2)'); for i := 1 to 5 do readln(D[i]); if (D[5]=2) and (D[4]=3) and (D[3]=5) and (D[2]=1) and (D[1]=4) then Writeln('Rez= ',D[D[3]]-D[D[5]]) else Writeln('Neverno zadan massiv'); Writeln('End program'); Readln; end. |
Код программы на языке Assembler:
program KP; var i,rez,flag:byte; D: array [1..5] of byte; begin Writeln('Vvedite massiv D=(4,1,5,3,2)'); for i := 1 to 5 do readln(D[i]); asm lea bx,D mov ah,[bx][4] cmp ah,2 jne @then mov ah,[bx][3] cmp ah,3 jne @then mov ah,[bx][2] cmp ah,5 jne @then mov ah,[bx][1] cmp ah,1 jne @then mov ah,[bx][0] cmp ah,4 jne @then mov flag,1 mov ah,[bx][4] sub ah,[bx][1] mov rez,ah jmp @end @then: mov flag,0 @end: end; if flag=1 then Writeln('D[D[3]]-D[D[5]]= ',rez) else Writeln('Neverno zadan massiv'); Writeln('End program'); Readln; end. |
Результат работы программы: