07a2b481 (kx 2024-12-28 08:20:38 +0300 1) .\" Copyright 2024 Andrew V.Kosteltsev (kx@radix-linux.su)
07a2b481 (kx 2024-12-28 08:20:38 +0300 2) .\"
07a2b481 (kx 2024-12-28 08:20:38 +0300 3) .\"
07a2b481 (kx 2024-12-28 08:20:38 +0300 4) .TH isbb 3 "December 27, 2024" "libmpu" "LibMPU Programmer's Manual"
07a2b481 (kx 2024-12-28 08:20:38 +0300 5) .SH NAME
07a2b481 (kx 2024-12-28 08:20:38 +0300 6) \fBisbb\fP \- вычитание знаковое и беззнаковое с переносом
07a2b481 (kx 2024-12-28 08:20:38 +0300 7) .SH SYNOPSIS
07a2b481 (kx 2024-12-28 08:20:38 +0300 8) .nf
07a2b481 (kx 2024-12-28 08:20:38 +0300 9) .B #include <libmpu.h>
07a2b481 (kx 2024-12-28 08:20:38 +0300 10) .PP
07a2b481 (kx 2024-12-28 08:20:38 +0300 11) .BI "void isbb( mpu_int *" c ", mpu_int *" a ", mpu_int *" b ", int " nb " );
07a2b481 (kx 2024-12-28 08:20:38 +0300 12) .fi
07a2b481 (kx 2024-12-28 08:20:38 +0300 13) .SH DESCRIPTION
07a2b481 (kx 2024-12-28 08:20:38 +0300 14) Функция \fBisbb()\fP выполняет операцию вычитания целых чисел, расположенных по адресам \fBa\fP и \fBb\fP,
07a2b481 (kx 2024-12-28 08:20:38 +0300 15) из полученной разности вычитает значение флага переноса \fBC\fP и размещает результат по адресу \fBc\fP.
07a2b481 (kx 2024-12-28 08:20:38 +0300 16) Операнды могут быть числами со знаком или без него. Содержимое памяти по адресам \fBa\fP, \fBb\fP
07a2b481 (kx 2024-12-28 08:20:38 +0300 17) не изменяется, предыдущее содержимое памяти по адресу \fBc\fP теряется. Параметр \fBnb\fP определяет
653f53cb (kx 2024-12-30 21:50:33 +0300 18) размер операндов (в байтах), расположенных по адресам \fBc\fP, \fBa\fP, \fBb\fP. Поскольку функция \fBisbb()\fP
07a2b481 (kx 2024-12-28 08:20:38 +0300 19) использует флаг переноса \fBC\fP, то она может применяться для вычитания чисел, длина которых
07a2b481 (kx 2024-12-28 08:20:38 +0300 20) превышает максимально допустимые размеры целых чисел.
07a2b481 (kx 2024-12-28 08:20:38 +0300 21) .PP
07a2b481 (kx 2024-12-28 08:20:38 +0300 22) Функция воздействует на флаги \fBA\fP, \fBC\fP, \fBO\fP, \fBP\fP, \fBS\fP, \fBZ\fP и \fBV\fP.
07a2b481 (kx 2024-12-28 08:20:38 +0300 23) .PP
07a2b481 (kx 2024-12-28 08:20:38 +0300 24) Флаги \fBА\fP и \fBP\fP выставляются только в том случае, когда размер операндов \fBa\fP, \fBb\fP равен одному или
07a2b481 (kx 2024-12-28 08:20:38 +0300 25) двум байтам (\fBnb\fP == 1 || \fBnb\fP == 2).
07a2b481 (kx 2024-12-28 08:20:38 +0300 26) .sp
07a2b481 (kx 2024-12-28 08:20:38 +0300 27) .SH EXAMPLES
07a2b481 (kx 2024-12-28 08:20:38 +0300 28) .nf
07a2b481 (kx 2024-12-28 08:20:38 +0300 29) .sp
07a2b481 (kx 2024-12-28 08:20:38 +0300 30) #include <libmpu.h>
07a2b481 (kx 2024-12-28 08:20:38 +0300 31) #include <stdio.h>
07a2b481 (kx 2024-12-28 08:20:38 +0300 32)
07a2b481 (kx 2024-12-28 08:20:38 +0300 33) int main( void )
07a2b481 (kx 2024-12-28 08:20:38 +0300 34) {
07a2b481 (kx 2024-12-28 08:20:38 +0300 35) int rc = 0;
07a2b481 (kx 2024-12-28 08:20:38 +0300 36)
07a2b481 (kx 2024-12-28 08:20:38 +0300 37) __mpu_init();
07a2b481 (kx 2024-12-28 08:20:38 +0300 38) __mpu_extra_warnings = 1;
07a2b481 (kx 2024-12-28 08:20:38 +0300 39)
07a2b481 (kx 2024-12-28 08:20:38 +0300 40) {
07a2b481 (kx 2024-12-28 08:20:38 +0300 41) mpu_int128_t c, a, b;
07a2b481 (kx 2024-12-28 08:20:38 +0300 42) int nb = NB_I128;
07a2b481 (kx 2024-12-28 08:20:38 +0300 43) __mpu_char8_t s[256];
07a2b481 (kx 2024-12-28 08:20:38 +0300 44)
07a2b481 (kx 2024-12-28 08:20:38 +0300 45) iatoi( a, "237", nb ); /* evaluate the A variable */
07a2b481 (kx 2024-12-28 08:20:38 +0300 46) iatoi( b, "37", nb ); /* evaluate the B variable */
07a2b481 (kx 2024-12-28 08:20:38 +0300 47)
07a2b481 (kx 2024-12-28 08:20:38 +0300 48) __mpu_stc(); /* Set Carry Flag */
07a2b481 (kx 2024-12-28 08:20:38 +0300 49)
07a2b481 (kx 2024-12-28 08:20:38 +0300 50) isbb( c, a, b, nb );
07a2b481 (kx 2024-12-28 08:20:38 +0300 51) iitoa( s, c, RADIX_DEC, LOWERCASE, nb ); /* convert C value to ASCII string S */
e3f8685d (kx 2024-12-30 18:22:24 +0300 52) printf( "c = %s;\\n", s ); /* c = 199; */
07a2b481 (kx 2024-12-28 08:20:38 +0300 53) }
07a2b481 (kx 2024-12-28 08:20:38 +0300 54)
07a2b481 (kx 2024-12-28 08:20:38 +0300 55) __mpu_free_context();
07a2b481 (kx 2024-12-28 08:20:38 +0300 56)
07a2b481 (kx 2024-12-28 08:20:38 +0300 57) return( rc );
07a2b481 (kx 2024-12-28 08:20:38 +0300 58) }
07a2b481 (kx 2024-12-28 08:20:38 +0300 59) .fi
07a2b481 (kx 2024-12-28 08:20:38 +0300 60) .sp
07a2b481 (kx 2024-12-28 08:20:38 +0300 61) .SH SEE ALSO
07a2b481 (kx 2024-12-28 08:20:38 +0300 62) .BR iadd(3),
41c271da (kx 2025-01-05 15:42:39 +0300 63) .BR isub(3),
07a2b481 (kx 2024-12-28 08:20:38 +0300 64) .BR iadc(3),
41c271da (kx 2025-01-05 15:42:39 +0300 65) .BR ishl(3),
41c271da (kx 2025-01-05 15:42:39 +0300 66) .BR ishr(3),
41c271da (kx 2025-01-05 15:42:39 +0300 67) .BR isal(3),
41c271da (kx 2025-01-05 15:42:39 +0300 68) .BR isar(3),
41c271da (kx 2025-01-05 15:42:39 +0300 69) .BR irol(3),
41c271da (kx 2025-01-05 15:42:39 +0300 70) .BR iror(3),
41c271da (kx 2025-01-05 15:42:39 +0300 71) .BR ircl(3),
41c271da (kx 2025-01-05 15:42:39 +0300 72) .BR ircr(3),
41c271da (kx 2025-01-05 15:42:39 +0300 73) .BR ishln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 74) .BR ishrn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 75) .BR isaln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 76) .BR isarn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 77) .BR iroln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 78) .BR irorn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 79) .BR ircln(3),
41c271da (kx 2025-01-05 15:42:39 +0300 80) .BR ircrn(3),
41c271da (kx 2025-01-05 15:42:39 +0300 81) .BR ineg(3),
41c271da (kx 2025-01-05 15:42:39 +0300 82) .BR inot(3),
41c271da (kx 2025-01-05 15:42:39 +0300 83) .BR iand(3),
41c271da (kx 2025-01-05 15:42:39 +0300 84) .BR itest(3),
41c271da (kx 2025-01-05 15:42:39 +0300 85) .BR icmp(3),
41c271da (kx 2025-01-05 15:42:39 +0300 86) .BR ior(3),
41c271da (kx 2025-01-05 15:42:39 +0300 87) .BR ixor(3),
41c271da (kx 2025-01-05 15:42:39 +0300 88) .BR iinc(3),
41c271da (kx 2025-01-05 15:42:39 +0300 89) .BR idec(3),
41c271da (kx 2025-01-05 15:42:39 +0300 90) .BR ixchg(3),
41c271da (kx 2025-01-05 15:42:39 +0300 91) .BR icpy(3),
41c271da (kx 2025-01-05 15:42:39 +0300 92) .BR icvt(3),
41c271da (kx 2025-01-05 15:42:39 +0300 93) .BR imul(3),
41c271da (kx 2025-01-05 15:42:39 +0300 94) .BR ismul(3),
41c271da (kx 2025-01-05 15:42:39 +0300 95) .BR idiv(3),
41c271da (kx 2025-01-05 15:42:39 +0300 96) .BR isdiv(3),
41c271da (kx 2025-01-05 15:42:39 +0300 97) .BR iatoi(3),
41c271da (kx 2025-01-05 15:42:39 +0300 98) .BR iatoui(3),
41c271da (kx 2025-01-05 15:42:39 +0300 99) .BR iitoa(3),
41c271da (kx 2025-01-05 15:42:39 +0300 100) .BR iuitoa(3).