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"
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.