Advertisement
Ladies_Man

#NUP LAB_4 X-func (PDP-11)

May 31st, 2014
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. === strtoi2 ===========================================
  2. 1. Описание:
  3. Реализация функции int strtoi2(const char *nptr, char **endptr) для основания 2 и типа int
  4.  
  5. Программа принимает указатель на строку (в формате asciz) в регистре R1 и указатель на endptr в регистре R2.
  6. В ходе работы регисты R1, R2, R3, R4, R5 не меняются.
  7. Программа выполняет конвертацию строки (содержащей 0 и 1) в 16 битное число.
  8. Если в начале строки содержатся пробельные символы, то они пропускаются (пробельными считаются ' ', '\n', '\r')
  9.  
  10. 2. Результат работы программы:
  11.     1. если программа успешно завершилась, то значение возвращается в регистре R0,
  12.        в памяти по адресу endptr будет содержать адрес символа, следующего за последним преобразованным элементом.
  13.     2. если произошла ошибка, то endptr равен адресу nptr (в регистре R0 лежит 0).
  14.  
  15. 3. Пример входных данных:
  16. Строка записанная ввиде
  17. "100100"
  18. будет кодироваться как
  19. 60 * 256 + 61, 61 * 256 + 60, 60*256 + 60, 0;
  20. (порядок байтов little endian)
  21.  
  22. d 2000=005000  
  23. d 2002=010146  
  24. d 2004=010346  
  25. d 2006=005003  
  26. d 2010=010446      
  27. d 2012=010546  
  28. d 2014=004737  
  29. d 2016=3000 call
  30. d 2020=012704  
  31. d 2022=20
  32. d 2024=000401                    
  33. d 2026=112103  
  34. d 2030=162703  
  35. d 2032=60
  36. d 2034=002407  
  37. d 2036=005303  
  38. d 2040=003005  
  39. d 2042=005203  
  40. d 2044=006300  
  41. d 2046=050300  
  42. d 2050=077412  
  43. d 2052=000401  
  44. d 2054=005301  
  45. d 2056=005702  
  46. d 2060=001401  
  47. d 2062=010112  
  48. d 2064=012605  
  49. d 2066=012604  
  50. d 2070=012603  
  51. d 2072=012601  
  52. d 2074=000207   return
  53.  
  54. d 3000=112103  
  55. d 3002=122703  
  56. d 3004=40
  57. d 3006=001774  
  58. d 3010=122703  
  59. d 3012=15
  60. d 3014=001771  
  61. d 3016=122703  
  62. d 3020=12
  63. d 3022=001766  
  64. d 3024=000207   return
  65.  
  66.  
  67. === strnset ===========================================
  68. Функция char *strnset(char *str, int ch, size_t count)
  69. заменяет первые count символов строки str на символ ch и возвращает указатель на измененную строку.
  70. В случае, если длинна строки str меньше, чем count, то мы получим строку той же длинны, что и str, состоящую из символов ch.
  71. Строка str записывается в кодировке ASCIZ, то есть должна заканчиваться символом 0.
  72. В ходе выполнения подпрограммы будут разрушены R0, R1, R2.
  73. Перед вызовом функции положите адрес изменяемой строки (*str) в R0, символ (ch) в R1, счетчик (count) в R2.
  74. Функция вернет адрес измененной строки в R0.
  75.  
  76. 005702 
  77. 001406 
  78. 010046 
  79. 105710 
  80. 001402 
  81. 110120 
  82. 077204           
  83. 012600 
  84. 000207  return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement