Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

1. There are important equations in logical expression: Morgan’s Law I: .NOT. (A

ID: 3841616 • Letter: 1

Question

1. There are important equations in logical expression: Morgan’s Law I: .NOT. (A .OR. B) = (.NOT. A) .AND. (.NOT. B) Morgan’ Law II: .NOT.(A .AND. B) = (.NOT. A ) .OR.(.NOT. B)

Write, for each law, an Assembly Language program which ‘proves’ the two laws are true for all possible values of A and B.

2. A .AND. (B .OR. C) = (A .AND. B) .OR. (A .AND. C) is referred to as the “distributive law.

Write, Assembly Language program which ‘proves’ the law is true for all possible values of A, B, C.

3. Two positive different integer numbers are said to be relatively prime if both numbers have no common divisors other than the number 1. Examples: The numbers 51, 32 are relatively prime since they have no common divisors. The numbers 22, 40 are not relatively prime since 2 divides both numbers.

Write an assembly language algorithm that will find out if 1048576, 387420489 are relatively prime.

Explanation / Answer

1,2 answers:

.file 1 ""

      .section .mdebug.abi32

      .previous

      .gnu_attribute 4, 1

      .abicalls

      .rdata

      .align      2

$LC0:

      .ascii      " Show that (!(x < 5) && !(y >= 7)) and !((x < 5) || ("

      .ascii      "y >= 7)) are logically equivalent "

      .align      2

$LC1:

      .ascii      "%s"

      .align      2

$LC2:

      .ascii      "Enter x: "

      .align      2

$LC3:

      .ascii      "%2u"

      .align      2

$LC4:

      .ascii      "Enter y: "

      .align      2

$LC5:

      .ascii      "True! "

      .align      2

$LC6:

      .ascii      "False! "

      .align      2

$LC7:

      .ascii      "Want more examples of this logical equivalency? "

      .align      2

$LC8:

      .ascii      "%c"

      .align      2

$LC9:

      .ascii      " Show that (!(a == b) || !(g != 5)) and !((a == b) &&"

      .ascii      " (g != 5)) are logically equivalent "

      .align      2

$LC10:

      .ascii      "Enter a: "

      .align      2

$LC11:

      .ascii      "Enter b: "

      .align      2

$LC12:

      .ascii      "Enter g: "

      .align      2

$LC13:

      .ascii      " Show that !((x <= 8) && (y > 4)) and (!(x <= 8) || !"

      .ascii      "(y > 4)) are logically equivalent "

      .align      2

$LC14:

      .ascii      " Show that !((i > 4) || (j <= 6)) and (!(i > 4) && !("

      .ascii      "j <= 6)) are logically equivalent "

      .align      2

$LC15:

      .ascii      "Enter i: "

      .align      2

$LC16:

      .ascii      "Enter j: "

      .align      2

$LC17:

      .ascii      " %s"

      .align      2

$LC18:

      .ascii      "Now you know DeMorgan's Laws!"

      .text

      .align      2

      .globl      main

$LFB0 = .

      .set nomips16

      .ent main

      .type main, @function

main:

      .frame      $fp,64,$31        # vars= 32, regs= 2/0, args= 16, gp= 8

      .mask 0xc0000000,-4

      .fmask      0x00000000,0

      .set noreorder

      .cpload     $25

      .set nomacro

     

      addiu $sp,$sp,-64

$LCFI0:

      sw    $31,60($sp)

$LCFI1:

      sw    $fp,56($sp)

      movz $31,$31,$0

$LCFI2:

      move $fp,$sp

$LCFI3:

      .cprestore 16

      li    $2,121                  # 0x79

      sb    $2,52($fp)

$L4:

      lw    $2,%got($LC0)($28)

      nop

      addiu $4,$2,%lo($LC0)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC2)($28)

      nop

      addiu $5,$2,%lo($LC2)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,44

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC4)($28)

      nop

      addiu $5,$2,%lo($LC4)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,48

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lw    $2,44($fp)

      nop

      slt   $2,$2,5

      bne   $2,$0,$L2

      nop

      lw    $2,48($fp)

      nop

      slt   $2,$2,7

      beq   $2,$0,$L2

      nop

      lw    $2,44($fp)

      nop

      slt   $2,$2,5

      bne   $2,$0,$L2

      nop

      lw    $2,48($fp)

      nop

      slt   $2,$2,7

      beq   $2,$0,$L2

      nop

      lw    $2,%got($LC5)($28)

      nop

      addiu $4,$2,%lo($LC5)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      b     $L3

      nop

$L2:

      lw    $2,%got($LC6)($28)

      nop

      addiu $4,$2,%lo($LC6)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

$L3:

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC7)($28)

      nop

      addiu $5,$2,%lo($LC7)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%call16(getchar)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,52

      lw    $3,%got($LC8)($28)

      nop

      addiu $4,$3,%lo($LC8)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lb    $2,52($fp)

      nop

      xori $2,$2,0x79

      sltu $2,$2,1

      andi $2,$2,0x00ff

      bne   $2,$0,$L4

      nop

      lb    $3,52($fp)

      li    $2,110                  # 0x6e

      bne   $3,$2,$L5

      nop

$L10:

      lw    $2,%got($LC9)($28)

      nop

      addiu $4,$2,%lo($LC9)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC10)($28)

      nop

      addiu $5,$2,%lo($LC10)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC3)($28)

      nop

      addiu $4,$2,%lo($LC3)

      addiu $2,$fp,24

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC11)($28)

      nop

      addiu $5,$2,%lo($LC11)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,28

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC12)($28)

      nop

      addiu $5,$2,%lo($LC12)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,32

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lw    $3,24($fp)

      lw    $2,28($fp)

      nop

      bne   $3,$2,$L6

      nop

      lw    $3,32($fp)

      li    $2,5              # 0x5

      bne   $3,$2,$L7

      nop

$L6:

      lw    $3,24($fp)

      lw    $2,28($fp)

      nop

      bne   $3,$2,$L8

      nop

      lw    $3,32($fp)

      li    $2,5              # 0x5

      bne   $3,$2,$L7

      nop

$L8:

      lw    $2,%got($LC5)($28)

      nop

      addiu $4,$2,%lo($LC5)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      b     $L9

      nop

$L7:

      lw    $2,%got($LC6)($28)

      nop

      addiu $4,$2,%lo($LC6)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

$L9:

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC7)($28)

      nop

      addiu $5,$2,%lo($LC7)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,52

      lw    $3,%got($LC8)($28)

      nop

      addiu $4,$3,%lo($LC8)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lb    $2,52($fp)

      nop

      xori $2,$2,0x79

      sltu $2,$2,1

      andi $2,$2,0x00ff

      bne   $2,$0,$L10

      nop

$L5:

      lb    $3,52($fp)

      li    $2,110                  # 0x6e

      bne   $3,$2,$L11

      nop

$L16:

      lw    $2,%got($LC13)($28)

      nop

      addiu $4,$2,%lo($LC13)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC2)($28)

      nop

      addiu $5,$2,%lo($LC2)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,44

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC4)($28)

      nop

      addiu $5,$2,%lo($LC4)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,48

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lw    $2,44($fp)

      nop

      slt   $2,$2,9

      beq   $2,$0,$L12

      nop

      lw    $2,48($fp)

      nop

      slt   $2,$2,5

      beq   $2,$0,$L13

      nop

$L12:

      lw    $2,44($fp)

      nop

      slt   $2,$2,9

      beq   $2,$0,$L14

      nop

      lw    $2,48($fp)

      nop

      slt   $2,$2,5

      beq   $2,$0,$L13

      nop

$L14:

      lw    $2,%got($LC5)($28)

      nop

      addiu $4,$2,%lo($LC5)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      b     $L15

      nop

$L13:

      lw    $2,%got($LC6)($28)

      nop

      addiu $4,$2,%lo($LC6)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

$L15:

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC7)($28)

      nop

      addiu $5,$2,%lo($LC7)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,52

      lw    $3,%got($LC8)($28)

      nop

      addiu $4,$3,%lo($LC8)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lb    $2,52($fp)

      nop

      xori $2,$2,0x79

      sltu $2,$2,1

      andi $2,$2,0x00ff

      bne   $2,$0,$L16

      nop

$L11:

      lb    $3,52($fp)

      li    $2,110                  # 0x6e

      bne   $3,$2,$L17

      nop

$L20:

      lw    $2,%got($LC14)($28)

      nop

      addiu $4,$2,%lo($LC14)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC15)($28)

      nop

      addiu $5,$2,%lo($LC15)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,36

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC16)($28)

      nop

      addiu $5,$2,%lo($LC16)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,40

      lw    $3,%got($LC3)($28)

      nop

      addiu $4,$3,%lo($LC3)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lw    $2,36($fp)

      nop

      slt   $2,$2,5

      beq   $2,$0,$L18

      nop

      lw    $2,40($fp)

      nop

      slt   $2,$2,7

      bne   $2,$0,$L18

      nop

      lw    $2,44($fp)

      nop

      slt   $2,$2,9

      bne   $2,$0,$L18

      nop

      lw    $2,48($fp)

      nop

      slt   $2,$2,5

      beq   $2,$0,$L18

      nop

      lw    $2,%got($LC5)($28)

      nop

      addiu $4,$2,%lo($LC5)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      b     $L19

      nop

$L18:

      lw    $2,%got($LC6)($28)

      nop

      addiu $4,$2,%lo($LC6)

      lw    $2,%call16(puts)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

$L19:

      lw    $2,%got($LC1)($28)

      nop

      addiu $4,$2,%lo($LC1)

      lw    $2,%got($LC7)($28)

      nop

      addiu $5,$2,%lo($LC7)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      nop

      lw    $2,%call16(getchar)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      addiu $2,$fp,52

      lw    $3,%got($LC8)($28)

      nop

      addiu $4,$3,%lo($LC8)

      move $5,$2

      lw    $2,%call16(scanf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

      lb    $2,52($fp)

      nop

      xori $2,$2,0x79

      sltu $2,$2,1

      andi $2,$2,0x00ff

      bne   $2,$0,$L20

      nop

$L17:

      lb    $3,52($fp)

      li    $2,110                  # 0x6e

      bne   $3,$2,$L21

      nop

      lw    $2,%got($LC17)($28)

      nop

      addiu $4,$2,%lo($LC17)

      lw    $2,%got($LC18)($28)

      nop

      addiu $5,$2,%lo($LC18)

      lw    $2,%call16(printf)($28)

      nop

      move $25,$2

      jalr $25

      nop

      lw    $28,16($fp)

$L21:

      move $2,$0

      move $sp,$fp

      lw    $31,60($sp)

      lw    $fp,56($sp)

      addiu $sp,$sp,64

      j     $31

      nop

      .set macro

      .set reorder

      .end main

$LFE0:

      .size main, .-main

      .section    .eh_frame,"aw",@progbits

$Lframe1:

      .4byte      $LECIE1-$LSCIE1

$LSCIE1:

      .4byte      0x0

      .byte 0x1

      .globl      __gxx_personality_v0

      .ascii      "zP"

      .uleb128 0x1

      .sleb128 -4

      .byte 0x1f

      .uleb128 0x5

      .byte 0x0

      .4byte      __gxx_personality_v0

      .byte 0xc

      .uleb128 0x1d

      .uleb128 0x0

      .align      2

$LECIE1:

$LSFDE1:

      .4byte      $LEFDE1-$LASFDE1

$LASFDE1:

      .4byte      $LASFDE1-$Lframe1

      .4byte      $LFB0

      .4byte      $LFE0-$LFB0

      .uleb128 0x0

      .byte 0x4

      .4byte      $LCFI0-$LFB0

      .byte 0xe

      .uleb128 0x40

      .byte 0x4

      .4byte      $LCFI2-$LCFI0

      .byte 0x11

      .uleb128 0x1e

      .sleb128 2

      .byte 0x11

      .uleb128 0x1f

      .sleb128 1

      .byte 0x4

      .4byte      $LCFI3-$LCFI2

      .byte 0xd

      .uleb128 0x1e

      .align      2

$LEFDE1:

      .ident      "GCC: (Debian 4.4.5-8) 4.4.5"