IBM Personal Computer MACRO Assembler Version 2.00 Page 1-1 11-02-92 1 ; OUTPUT of pascal compiler by Naser A bbasi 2 ; CSE565 Oakland University April 198 8 3 = 000A lf EQU 0aH 4 = 000D cr EQU 0dH 5 = 0021 doscall EQU 21h ; dos interupt rou tine 6 7 0000 st_seq segment byte stack ;define st ack segment 8 0000 14 [ db 20 dup (?) 9 ?? 10 ] 11 12 0014 st_seq ends 13 ;-------------------------------------- ----- 14 0000 code segment byte public ; define c ode seqment 15 16 0000 test1 proc far 17 assume cs:code 18 0000 Start: 19 0000 1E push ds ;save old value 20 0001 2B C0 sub ax,ax ;put zero in ax 21 0003 50 push ax ;save it on st ack 22 23 24 ; move number on stack 25 0004 B8 000D mov ax, 0dH 26 0007 50 push ax 27 ; resolve lhs refernce 28 0008 8B C1 mov ax,BP- 4 29 ; perform assignment 30 000A 5B POP bx 31 000B 8B C3 MOV ax,bx 32 ; resolve rhs refernce 33 000D 8B 46 FC mov ax,-4[BP] 34 0010 50 push ax 35 ; generate call argumnet allready on s tack 36 0011 E8 00CE R CALL putc 37 38 ; move number on stack 39 0014 B8 000A mov ax, 0aH 40 0017 50 push ax 41 ; resolve lhs refernce 42 0018 8B C1 mov ax,BP- 4 43 ; perform assignment 44 001A 5B POP bx 45 001B 8B C3 MOV ax,bx  IBM Personal Computer MACRO Assembler Version 2.00 Page 1-2 11-02-92 46 ; resolve rhs refernce 47 001D 8B 46 FC mov ax,-4[BP] 48 0020 50 push ax 49 ; generate call argumnet allready on s tack 50 0021 E8 00CE R CALL putc 51 52 ; push char on stack 53 0024 B8 0048 mov ax,72 54 0027 50 PUSH ax 55 ; generate call argumnet allready on s tack 56 0028 E8 00CE R CALL putc 57 58 ; push char on stack 59 002B B8 0069 mov ax,105 60 002E 50 PUSH ax 61 ; generate call argumnet allready on s tack 62 002F E8 00CE R CALL putc 63 64 ; push char on stack 65 0032 B8 0021 mov ax,33 66 0035 50 PUSH ax 67 ; generate call argumnet allready on s tack 68 0036 E8 00CE R CALL putc 69 70 ; move number on stack 71 0039 B8 000D mov ax, 0dH 72 003C 50 push ax 73 ; resolve lhs refernce 74 003D 8B C1 mov ax,BP- 4 75 ; perform assignment 76 003F 5B POP bx 77 0040 8B C3 MOV ax,bx 78 ; resolve rhs refernce 79 0042 8B 46 FC mov ax,-4[BP] 80 0045 50 push ax 81 ; generate call argumnet allready on s tack 82 0046 E8 00CE R CALL putc 83 84 ; move number on stack 85 0049 B8 000A mov ax, 0aH 86 004C 50 push ax 87 ; resolve lhs refernce 88 004D 8B C1 mov ax,BP- 4 89 ; perform assignment 90 004F 5B POP bx 91 0050 8B C3 MOV ax,bx 92 ; resolve rhs refernce 93 0052 8B 46 FC mov ax,-4[BP] 94 0055 50 push ax IBM Personal Computer MACRO Assembler Version 2.00 Page 1-3 11-02-92 95 ; generate call argumnet allready on s tack 96 0056 E8 00CE R CALL putc 97 98 ; push the value of variable on stack 99 0059 B8 0000 mov ax,0 100 005C 50 push ax 101 ; resolve lhs refernce 102 005D 8B C3 mov ax,BP- 2 103 ; perform assignment 104 005F 5B POP bx 105 0060 8B C3 MOV ax,bx 106 ; code for while stmt 107 0062 lab1: 108 109 ;Test for While Loop 110 ; push the value of variable on stack 111 0062 B8 0009 mov ax,9 112 0065 50 push ax 113 ; resolve rhs refernce 114 0066 8B 46 FE mov ax,-2[BP] 115 0069 50 push ax 116 ;---- resolve le 117 ; leave ax=1 on true, ax=0 on false 118 006A 58 POP ax 119 006B 5B POP bx 120 006C 3B C3 CMP ax,bx 121 006E 7F 06 JG lab3 ; jump on greater than 122 123 0070 B8 0001 mov ax,1 ; test passed 124 0073 EB 04 90 JMP lab4 125 0076 lab3: 126 127 0076 B8 0000 mov ax,0 ;test failed 128 0079 lab4: 129 130 0079 BA 0001 mov dx,1 131 007C 3B C2 cmp ax,dx 132 007E 7C 2D JL lab2 133 ; Body of While Loop 134 ; push the value of variable on stack 135 0080 B8 0030 mov ax, 30H 136 0083 50 push ax 137 ; resolve rhs refernce 138 0084 8B 46 FE mov ax,-2[BP] 139 0087 50 push ax 140 ; perform addition 141 0088 58 POP ax 142 0089 5B POP bx 143 008A 03 C3 ADD ax,bx 144 008C 50 push ax 145 ; resolve lhs refernce 146 008D 8B C1 mov ax,BP- 4 147 ; perform assignment IBM Personal Computer MACRO Assembler Version 2.00 Page 1-4 11-02-92 148 008F 5B POP bx 149 0090 8B C3 MOV ax,bx 150 ; resolve rhs refernce 151 0092 8B 46 FC mov ax,-4[BP] 152 0095 50 push ax 153 ; generate call argumnet allready on s tack 154 0096 E8 00CE R CALL putc 155 156 ; push the value of variable on stack 157 0099 B8 0001 mov ax,1 158 009C 50 push ax 159 ; resolve rhs refernce 160 009D 8B 46 FE mov ax,-2[BP] 161 00A0 50 push ax 162 ; perform addition 163 00A1 58 POP ax 164 00A2 5B POP bx 165 00A3 03 C3 ADD ax,bx 166 00A5 50 push ax 167 ; resolve lhs refernce 168 00A6 8B C3 mov ax,BP- 2 169 ; perform assignment 170 00A8 5B POP bx 171 00A9 8B C3 MOV ax,bx 172 00AB EB B5 JMP lab1 173 00AD lab2: 174 175 ; move number on stack 176 00AD B8 000D mov ax, 0dH 177 00B0 50 push ax 178 ; resolve lhs refernce 179 00B1 8B C1 mov ax,BP- 4 180 ; perform assignment 181 00B3 5B POP bx 182 00B4 8B C3 MOV ax,bx 183 ; resolve rhs refernce 184 00B6 8B 46 FC mov ax,-4[BP] 185 00B9 50 push ax 186 ; generate call argumnet allready on s tack 187 00BA E8 00CE R CALL putc 188 189 ; move number on stack 190 00BD B8 000A mov ax, 0aH 191 00C0 50 push ax 192 ; resolve lhs refernce 193 00C1 8B C1 mov ax,BP- 4 194 ; perform assignment 195 00C3 5B POP bx 196 00C4 8B C3 MOV ax,bx 197 ; resolve rhs refernce 198 00C6 8B 46 FC mov ax,-4[BP] 199 00C9 50 push ax IBM Personal Computer MACRO Assembler Version 2.00 Page 1-5 11-02-92 200 ; generate call argumnet allready on s tack 201 00CA E8 00CE R CALL putc 202 203 00CD CB ret ;go back to OS 204 00CE test1 endp 205 ;------------------------------------- 206 207 00CE putc proc near 208 00CE 55 push bp ;save bp 209 00CF 8B EC mov bp,sp ;set up stak f rame 210 00D1 83 EC 00 sub sp, 0 ;allocate frame 211 212 ; resolve rhs refernce 213 00D4 8B 46 02 mov ax, 2[BP] 214 00D7 50 push ax 215 00D8 58 POP ax ; get char from the stack 216 00D9 CD 21 INT doscall ; output it 217 00DB 8B E5 mov sp,bp ;deallocate local variab les 218 00DD 5D pop bp ;restore old value of bp 219 00DE C2 0002 RET 2 220 00E1 putc endp 221 ;------------------------------------- ------- 222 223 ;------------------------------------ 224 00E1 code ENDS 225 end start  IBM Personal Computer MACRO Assembler Version 2.00 Page Symbols -1 11-02-92 Segments and Groups: N a m e Size Align Combine Class CODE . . . . . . . . . . . . . . 00E1 BYTE PUBLIC ST_SEQ . . . . . . . . . . . . . 0014 BYTE STACK Symbols: N a m e Type Value Attr CR . . . . . . . . . . . . . . . Number 000D DOSCALL. . . . . . . . . . . . . Number 0021 LAB1 . . . . . . . . . . . . . . L NEAR 0062 CODE LAB2 . . . . . . . . . . . . . . L NEAR 00AD CODE LAB3 . . . . . . . . . . . . . . L NEAR 0076 CODE LAB4 . . . . . . . . . . . . . . L NEAR 0079 CODE LF . . . . . . . . . . . . . . . Number 000A PUTC . . . . . . . . . . . . . . N PROC 00CE CODE Length =0013 START. . . . . . . . . . . . . . L NEAR 0000 CODE TEST1. . . . . . . . . . . . . . F PROC 0000 CODE Length =00CE 50096 Bytes free Warning Severe Errors Errors 0 0