1Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Das Lernprogramm EASY Dieses Programm finden Sie auf unserer Buchhomepage http://r5.mnd.fh-wiesbaden.de/infobuch2. Das Werkzeug EASY erleichtert die Erstellung von MASM-Assemblerprogrammen. Es bildet einen Rahmen für beliebige Programme, die später als COM-Module laufen sollen. Da man an beliebiger Stelle im Programm Registerinhalte und Flags ausgeben kann, eignet sich EASY sowohl als Testhilfe wie als Lernwerkzeug. EASY verfügt über einen Benutzer-Programmbereich, in den der Programmierer seinen eigenen Programmcode einfügt. Der Benutzer-Datenbereich dient zur Variablendeklaration. EASY enthält zahlreiche Hilfsroutinen, die vom Programmierer aufgerufen werden können, um Standardprobleme zu lösen (Ein- und Ausgaben, Codeumwandlungen usw.): CALL INPAX CALL INPAXDEZ CALL INPAXBIN : Hexadezimale Eingabe in das AX-Register : Dezimale Eingabe in das AX-Register : Binäre Eingabe in das AX-Register CALL INPBX CALL INPBXDEZ CALL INPBXBIN : Hexadezimale Eingabe in das BX-Register : Dezimale Eingabe in das BX-Register : Binäre Eingabe in das BX-Register CALL INPCX CALL INPCXDEZ CALL INPCXBIN : Hexadezimale Eingabe in das CX-Register : Dezimale Eingabe in das CX-Register : Binäre Eingabe in das CX-Register CALL INPDX CALL INPDXDEZ CALL INPDXBIN : Hexadezimale Eingabe in das DX-Register : Dezimale Eingabe in das DX-Register : Binäre Eingabe in das DX-Register CALL OUTAX CALL OUTAXDEZ CALL OUTAXBIN : Hexadezimale Ausgabe aus dem AX-Register : Dezimale Ausgabe aus dem AX-Register : Binäre Ausgabe aus dem AX-Register CALL OUTBX CALL OUTBXDEZ CALL OUTBXBIN : Hexadezimale Ausgabe aus dem BX-Register : Dezimale Ausgabe aus dem BX-Register : Binäre Ausgabe aus dem BX-Register CALL OUTCX CALL OUTCXDEZ CALL OUTCXBIN : Hexadezimale Ausgabe aus dem CX-Register : Dezimale Ausgabe aus dem CX-Register : Binäre Ausgabe aus dem CX-Register CALL OUTDX CALL OUTDXDEZ CALL OUTDXBIN : Hexadezimale Ausgabe aus dem DX-Register : Dezimale Ausgabe aus dem DX-Register : Binäre Ausgabe aus dem DX-Register CALL CI CALL CO : Eingabe eines ASCII-Codes (einer Taste) in AL : AUSGABE eines ASCII-Codes aus AL VIDEO_CLS CLEAR_KEY PRINT TEXT : Löscht den Bildschirm : Löscht den Tastaturpuffer : Ausgabe eines Textes, der mit ‘$’ enden muss Zusätzlich werden zu jeder Register-Ausgabe die aktuellen Prozessor-Flags angezeigt. 2 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. EASY besteht aus drei Dateien, die sich auf unserer Diskette befinden: EASY.ASM EASY_MAC.ASM EASY_PRO.ASM (nur diese Datei darf editiert werden) Ein einfaches Beispiel demonstriert die Benutzung von EASY: ; ; Programmkopf: ; INCLUDE EASY_MAC.ASM CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE ORG 100h gSTART: jmp gANFANG ; ; ; ; ; ; Diese „ „ „ 5 Zeilen nicht verändern ! „ „ „ „ „ „ „ „ „ „ „ „ ; ; ; ; ; HIER KÖNNEN DATEN ANGELEGT WERDEN : ; ; ; ; ; HIER STARTET DAS USER-PROGRAMM : „ „ text1 db 10,13, Hier ist EASY ,10,13,’$’ gANFANG: print text1 call inpax call inpbx and ax,bx call outaxbin call ci inc al call co ; ; ; ; ; mov ax,4C00h int 21h HIER ENDET DAS USER-PROGRAMM : ; zur Sicherheit DOS-Beendigungscode ; DOS-Call Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 3 Folgende Befehle stehen zur Zeit zur Verfügung : CALL INPAX : Hexadezimale Eingabe in das AX-Register CALL INPAXDEZ : Dezimale Eingabe in das AX-Register CALL INPAXBIN : Binäre Eingabe in das AX-Register CALL INPBX : Hexadezimale Eingabe in das BX-Register CALL INPBXDEZ : Dezimale Eingabe in das BX-Register CALL INPBXBIN : Binäre Eingabe in das BX-Register CALL INPCX : Hexadezimale Eingabe in das CX-Register CALL INPCXDEZ : Dezimale Eingabe in das CX-Register CALL INPCXBIN : Binäre Eingabe in das CX-Register CALL INPDX : Hexadezimale Eingabe in das DX-Register CALL INPDXDEZ : Dezimale Eingabe in das DX-Register CALL INPDXBIN : Binäre Eingabe in das DX-Register CALL OUTAX : Hexadezimale Ausgabe aus dem AX-Register CALL OUTAXDEZ : Dezimale Ausgabe aus dem AX-Register CALL OUTAXBIN : Binäre Ausgabe aus dem AX-Regsiter CALL OUTBX : Hexadezimale Ausgabe aus dem BX-Register CALL OUTBXDEZ : Dezimale Ausgabe aus dem BX-Register CALL OUTBXBIN : Binäre Ausgabe aus dem BX-Register CALL OUTCX : Hexadezimale Ausgabe aus dem CX-Register CALL OUTCXDEZ : Dezimale Ausgabe aus dem CX-Register CALL OUTCXBIN : Binäre Ausgabe aus dem CX-Register CALL OUTDX : Hexadezimale Ausgabe aus dem DX-Register CALL OUTDXDEZ : Dezimale Ausgabe aus dem DX-Register CALL OUTDXBIN : Binäre Ausgabe aus dem DX-Register CALL CI CALL CO : Eingabe eines ASCII-Codes (einer Taste) in AL : AUSGABE eines ASCII-Codes aus AL VIDEO_CLS CLEAR_KEY PRINT TEXT : Löscht den Bildschirm : Löscht den Tastaturpuffer : Ausgabe eines Textes, der mit ’$’ enden muss ................................................ include EASY_PRO.ASM CODE ENDS END gSTART Im Benutzer-Datenbereich steht lediglich ein Text, der im Benutzer-Programmbereich mit dem Printbefehl ausgegeben wird. Danach werden jeweils zwei hexadezimale 16-Bit-Werte in die Register AX und BX eingelesen. Nach ihrer UND-Verknüpfung wird das Ergebnis im AX-Register binär ausgegeben. Nun wird ein Zeichen von Tastatur eingelesen (call ci), dessen ASCII-Wert um eins erhöht und ausgegeben (aus ‘A’ wird ‘B’, usw.). 4 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. ASCII-Tabelle ASCII-Tabelle (0-127 sowie erweitert 128-255) Hexcode 2. 0 1 2 3 4 5 6 7 8 9 A B C D E F BS 8 HT 9 LF 10 VT 11 FF 12 CR 13 SO 14 SI 15 FS 28 GS 29 RS 30 US 31 1. 0 NUL SOH STX EXT EOT ENQ ACK BEL 0 1 2 3 4 5 6 7 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM 16 17 18 19 20 21 22 23 24 25 2 32 ! 33 " 34 # 35 $ 36 % 37 & 38 ' 39 ( 40 ) 41 * 42 + 43 , 44 45 . 46 / 47 3 0 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57 : 58 ; 59 < 60 = 61 > 62 ? 63 4 @ 64 A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 5 P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90 [ 91 \ 92 ] 93 ^ 94 _ 95 6 ` 96 a 97 b 98 c 99 d e f g h i j k l m n o 100 101 102 103 104 105 106 107 108 109 110 111 7 p q r s t u v w x y z { | } ~ ▓ 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 8 Ç ü é â ä à å ç ê ë è ï î ì Ä Å 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 9 É æ Æ ô ö ò û ù ÿ Ö Ü ¢ £ ƒ 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 A á í ó ú ñ Ñ ª º ¿ ⌐ ¬ ½ ¼ ¡ « » 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 B ░ ▒ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 C └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 D ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀ 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 E α ß Γ π Σ σ µ τ Φ Θ Ω δ ∞ φ ε ∩ 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 F ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■ 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 SUB ESC 26 27