Кіріспе

Процессордың белгісі, қолтаңбасыз арифметикалық ағып кетудің орын алғанын көрсетеді Компьютерлік процессорларда тасымалдау белгісі (әдетте C белгісі ретінде көрсетіледі) - жүйелік күй тізіліміндегі бір бит, ол ең маңызды арифметикалық логикалық бірлік (ALU) бит позициясынан арифметикалық тасымалдау немесе қарыз алу пайда болғанын көрсету үшін қолданылады. Алып жүру белгісі бір ALU енінен үлкен сандарды екілік цифрды ішінара қосудан/алудан алып, маңызды сөздің ең аз бит позициясына дейін жеткізу (қосу) арқылы қосуға/алуға мүмкіндік береді. Бұл әдетте процессорды пайдаланушымен құрастыру немесе машина коды деңгейінде бағдарламаланады, бірақ кейбір процессорларда цифрлық логика немесе микрокод арқылы ішкі түрде де болуы мүмкін, мұнда кейбір процессорларда (комбинациялық немесе "физикалық") ALU-ға қарағанда кең регистрлер мен арифметикалық нұсқаулар бар. Ол сонымен қатар көптеген процессорларда біттік ауысуларды және айналуларды (кейде арнайы жалауша арқылы) ұқсас түрде кеңейтуге қолданылады. Алу операциялары үшін екі (қарсы) конвенция қолданылады, өйткені көптеген машиналар алып жүру белгісін қарыз алу үшін орнатады, ал кейбір машиналар (мысалы 6502 және PIC) оның орнына алып жүру белгісін қарыз алу үшін қайта орнатады (және керісінше).

Қолданылуы

Алып жүру жалаушасы арифметикалық (әдетте бірнеше бит ақылды) нұсқаулардың көпшілігінің нәтижесіне әсер етеді және сонымен қатар олардың көпшілігіне енгізу ретінде қолданылады. Осы нұсқаулардың бірнешеуінде екі форма бар, олар алып жүруді оқиды немесе елемеді. Ассемблері тілдерінде бұл нұсқаулар ADD/SUB, ADC/SBC (ADD/SUB, соның ішінде carry), SHL/SHR (биттік ауысулар), ROL/ROR (биттік айналулар), RCR/RCL (carry арқылы айналу) және т.б. сияқты мнемоникалармен бейнеленеді. Тасымалдау белгісін осылай қолдану бірнеше сөзді қосу, алу, ауыстыру және айналдыру операцияларын жүзеге асырады. Мысал ретінде 8 биттік регистрлерді қолдана отырып, 255 және 255 санын қосуды қарастырамыз. Нәтижесі 510 болуы керек, яғни бинарлық кодта 9 биттік 111111110 мәні. Реестрде әрқашан сақталатын 8 ең аз маңызды бит 11111110 бинарлық (254 ондық) болады, бірақ 7-биттен (сегіз бит) алып жүру болғандықтан, алып жүру орнатылады, бұл нәтижеге 9 бит қажет екенін көрсетеді. 9 биттік нәтиже - бұл carry жалаушасының нәтижемен байланысы. 8 битті x86 ALU өлшемі үшін, 8 битті екілік толықтыру интерпретациясы, 11111111 + 11111111 қосу операциясы 11111110-ға әкеледі, Carry Flag set, Sign Flag set, және Overflow Flag clear. Егер 11111111 екілік толықтыратын толық санды -1 (ADD al, 1) білдірсе, онда нәтиже 2 деп түсіндіріледі, өйткені Overflow Flag ашық, ал Carry Flag елемеді. Нәтиже белгісі теріс, өйткені белгі белгісі орнатылған. 11111110 - екілік толықтырғыш - 2 толық санның формасы. Егер 11111111 белгісіз бүтін санды екілік 255 (ADD al,255) білдірсе, онда нәтиже 254 деп түсіндіріледі, бұл дұрыс емес, өйткені нәтижедің ең маңызды біті Carry Flag-қа кірді, сондықтан оны елемеуге болмайды. Айналып кету жалаушасы мен белгі жалаушасы ескерілмейді. Тағы бір мысал 01010101 бит үлгісімен және carry флагымен 8 биттік регистр болуы мүмкін; егер біз carry нұсқаулығы арқылы солға бұрамыз, онда 10101011 болады, өйткені carry флагы тазартылады, өйткені ең маңызды бит (7 бит) carry-ге айналды, ал carry ең аз маңызды битке айналды (бит 0). Intel 4004 және Intel 8008 бастапқы микропроцессорларында тасымалдау белгісін нақты орнату және қалпына келтіру үшін арнайы нұсқаулар болды. Алайда, кейінгі Intel 8080 (және Z80) нақты қайта орнатуды алып жүру опкодын қамтымады, өйткені бұл біттік AND, OR немесе XOR нұсқауларының бірі арқылы (олар алып жүру жалауын қолданбайды) бірдей жылдам орындалуы мүмкін. Алып жүру жалаушасы, әдетте, азайту операциялары арқылы жүзеге асырылатын салыстыру нұсқауларынан кейін, салыстырылатын екі мәннің қайсысы екіншісінен төмен (немесе одан үлкен немесе оған тең) екендігі туралы шешім қабылдауға мүмкіндік беру үшін жиі қолданылады. Алып жүру жалауын тексеретін тармақ нұсқаулары көбінесе BCC және BCS сияқты мнемоникалармен бейнеленеді, егер алып жүру ашық болса, немесе егер алып жүру орнатылса, тармақ. Осылайша пайдаланылғанда, carry flag белгісі белгісіз бүтін сандар ретінде мәндерді салыстыру механизмін қамтамасыз етеді. Бұл - мәндерді толық сандық мәндер ретінде салыстыру механизмін қамтамасыз ететін ағындылық белгісіне қарама-қайшы.