Don't like ads? PRO users don't see any ads ;-)
Guest

lab4org

By: a guest on May 4th, 2012  |  syntax: None  |  size: 3.86 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ¬Национальный Исследовательский Университет
  2. Информационных Технологий, Механики и Оптики
  3.  
  4.  
  5. Кафедра: Вычислительной Техники
  6.  
  7. Курс: Организации ЭВМ и Систем
  8.  
  9.  
  10.  
  11.  
  12. Лабораторная работа 2
  13. Вариант 3
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. Выполнили:
  22. Студенты группы 2100
  23.  
  24.  
  25.  
  26.  
  27.  
  28. Проверил:
  29. Скорубский В.И.
  30.  
  31.  
  32.  
  33.  
  34. Санкт-Петербург
  35. 2011 год
  36. Теория:
  37. Ascii-код десятичной цифры занимает байт – в старшей тетраде добавляется 0x30.
  38. Десятичное число размещается как символьная константа в программной памяти Code, преобразуется в шестнадцатеричное во внутренней регистровой памяти Data и результат записывается во внешнюю память данных Xdata.
  39.  
  40. Задание:
  41. Заменить прописную букву “x” на заглавную в тексте.
  42. “This programmator” – “a” – “This progrAmmAtor”
  43.  
  44. Программа на C51:
  45. #include <reg51.h>
  46. char a;
  47. char  code y[]=”This programmator”;
  48. char xdata yy[17];
  49. main()
  50. {
  51. char i;
  52. for (i=0; i<<17; i++)
  53. {
  54. If (y[i] != ’a’)
  55. yy[i] =y[i];
  56. else
  57. yy[i] = ‘A’;
  58. }
  59. while(1);
  60. }
  61.  
  62. Листинг:
  63.  
  64. 0000 E4                CLR     A
  65. 0001 F500        R     MOV     i,A
  66. 0003         ?C0001:
  67. 0003 AF00        R     MOV     R7,i
  68. 0005 EF                MOV     A,R7
  69. 0006 33                RLC     A
  70. 0007 95E0              SUBB    A,ACC
  71. 0009 FE                MOV     R6,A
  72. 000A 7400        R     MOV     A,#LOW y
  73. 000C 2F                ADD     A,R7
  74. 000D F582              MOV     DPL,A
  75. 000F 7400        R     MOV     A,#HIGH y
  76. 0011 3E                ADDC    A,R6
  77. 0012 F583              MOV     DPH,A
  78. 0014 E4                CLR     A
  79. 0015 93                MOVC    A,@A+DPTR
  80. 0016 FD                MOV     R5,A
  81. 0017 6461              XRL     A,#061H
  82. 0019 600E              JZ      ?C0004
  83.                                            
  84. 001B 7400        R     MOV     A,#LOW yy
  85. 001D 2F                ADD     A,R7
  86. 001E F582              MOV     DPL,A
  87. 0020 7400        R     MOV     A,#HIGH yy
  88. 0022 3E                ADDC    A,R6
  89. 0023 F583              MOV     DPH,A
  90. 0025 ED                MOV     A,R5
  91. 0026 F0                MOVX    @DPTR,A
  92. 0027 8014              SJMP    ?C0003
  93. 0029         ?C0004:
  94. 0029 AF00        R     MOV     R7,i
  95. 002B EF                MOV     A,R7
  96. 002C 33                RLC     A
  97. 002D 95E0              SUBB    A,ACC
  98. 002F FE                MOV     R6,A
  99. 0030 7400        R     MOV     A,#LOW yy
  100. 0032 2F                ADD     A,R7
  101. 0033 F582              MOV     DPL,A
  102. 0035 7400        R     MOV     A,#HIGH yy
  103. 0037 3E                ADDC    A,R6
  104. 0038 F583              MOV     DPH,A
  105. 003A 7441              MOV     A,#041H
  106. 003C F0                MOVX    @DPTR,A
  107. 003D         ?C0003:
  108. 003D 0500        R     INC     i
  109. 003F E500        R     MOV     A,i
  110. 0041 B411BF            CJNE    A,#011H,?C0001
  111. 0044         ?C0006:
  112. 0044 80FE              SJMP    ?C0006
  113.              ; FUNCTION main (END)
  114.  
  115.  
  116. Программа на С51 с косвенной адресацией:
  117.  
  118. #include <reg51.h>
  119. char a, i;
  120. char code *y = “This programmator”;
  121. char xdata *yy;
  122. char xdata *xx;
  123. main()
  124. {
  125. xx;
  126. for ( i=0; i<17; i++)
  127. {
  128. if (*y != ‘a’)
  129. *yy = *y;
  130. else *yy = ‘A’;
  131. y++;
  132. yy++;
  133. }
  134. while(1);
  135. }
  136.  
  137. Программа на а51:
  138.  
  139. dseg at 8
  140. xseg at 0
  141. YY: ds 17
  142. cseg at 0
  143. jmp main
  144. Y: db "This programmator"
  145. main:
  146. mov r0, #17
  147. cikl:
  148. clr a
  149. mov a, #y
  150. movc a, @a+dptr
  151. mov b,a
  152.  
  153. cjne a, #61h,24h
  154. subb a,#30h
  155. movx @dptr,a
  156. inc dptr
  157. djnz r0,cikl
  158. end