Ex. 5.1.1 ;;Interpret into assembly instructions a. if A >= 0, X = A else if A < 0, X = -A cmp A,0 ;is A >=0 true? jnge Lab1 ; if A>=0 is false, go to Lab1 mov ax,A ; if true, put A in ax mov X,ax ; and X = A jmp Done Lab1: mov ax,A ;if false, put A in ax neg ax ; -A mov X,ax ;X = -A Done: 1b. if (A <= B) then Max = B else Max = A mov ax,A ;put A in ax cmp ax,B ;is A <= B? jnle Lab1 ;if A <= B is false, go to Lab1 mov ax,B ;if true, put B in ax mov Max,ax ; Max = B jmp Done Lab1: mov ax,A ;if false then mov Max,ax ; Max = A Done: 1c. if (Minute == 59) then (Minute = 0 and Hour = Hour + 1) else Minute = Minute + 1 cmp Minute,59 ;does Minute == 59? jne Lab1 ; if false, go to Lab1 mov Minute,0 ; if true, Minute = 0 and inc Hour ;Hour = Hour +1 jmp Done Lab1: inc Minute ; if false, Minute = Minute +1 Done: 1e. if (C >= 'A') and (C <= 'Z') then UpperCase = 1 else UpperCase = 0 cmp C,'A' ;is C >=A true? jnge Lab1 ; if false, go to Lab1 cmp C,'Z' ;if true, is C < = Z jnle Lab1 ;if false go to Lab1 mov UpperCase,1 ; if true UpperCase =1 jmp Done Lab1: move UpperCase,0 ;if false, UpperCase=0 Done: 1f. if [X > 0 then SgnX = 1 else if X < 0 then SgnX = -1] else SgnX = 0 cmp X,0 ;is X >0 true? jng Lab1 ; if false, go to Lab1 mov SgnX,1 ;if true, SgnX =1 jmp Done Lab1: jnl Lab2 ;if X<0 is false, go to Lab2 mov SgnX,-1 ;if it is true, SgnX = -1 jmp Done Lab2: mov SgnX,0 ;if X < 0 is false, SgnX = 0 Done: 5.1.2 a. if [(A >= 14) or (B == 17)] and (C != -5) then X = X + 1 cmp A,14 ;is A >=14 true? jnge Lab1 ; if false, go to Lab1 cmp C,-5 ; if true, is C != -5 true? jne Done ; if false, go to Done inc X ; else, X = X +1 Lab1: cmp B,17 ; if A >= 14 is false jne Done ; go to Done Done: b. if [(X > 5) and (Y < 0) or (Z <= 13) then A = 10] else A = 2 cmp X,5 ; is X > 5 true? jng Lab1 ; if false, go to Lab1 cmp Y,0 ; if true, is Y < 0 true? jnl Lab2 ; if false, go to Lab2 Lab1: cmp Z,13 ;if X>5 is false, is Z <=13? jnle Lab3 ;if false, go to Lab3 Lab2: mov A,10 ;if Y<0 is false, A=10 jmp Done Lab3: mov A,2 ;if Z <=13 is false, A =2 Done: 5.1.3 ;;Interpret from assembly a. cmp A,1 jnl A1 mov A,1 A1: Means: if (A < 1) then A = 1 b. mov ax, A cmp ax, B jng B1 sub B, ax jmp B2 B1: mov ax, B sub A, ax B2: Means: if (A > B) then B = B - A else A = A - B c. mov ax,A cmp ax,100 jnle C1 cmp ax,10 jnge C1 cwd idiv B mov A,ax C1: Means: if (A <= 100) and (A >= 10)then A = A / B d.? cmp A,1 je D1 cmp A,2 jne D2 D1: inc A jmp D3 D2: dec A D3: ? Means: if (A == 1) then A = A + 1 and if (A != 2) then A = A - 1