home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / progjour / 1991 / 04 / pjltrs.lst < prev    next >
File List  |  1991-06-07  |  8KB  |  171 lines

  1. LISTING 1: TEST PROGRAM SOURCE CODE
  2.  
  3. ;   Example program that just prints the current month name and exits.
  4.        org      100h
  5. begin: push     cs
  6.        pop      ds
  7.        mov      ah,2ah             ;get current month into register "dh"
  8.        int      21h 
  9.        mov      cx,12              ;look up month name in table
  10.        mov      si,offset months
  11. lp:    dec      dh
  12.        jz       gotit
  13. lp1:   lodsb
  14.        cmp      al,'$'
  15.        jnz      lp1
  16.        loop     lp
  17. gotit: mov      dx,si
  18.        mov      ah,9               ;now display the month
  19.        int      21h
  20.        mov      ax,4c00h           ;and exit
  21.        int      21h
  22. months:db       'January$'
  23.        db       'February$'
  24.        db       'March$'
  25.        db       'April$'
  26.        db       'May$'
  27.        ..... etc.
  28.        end     begin
  29.  
  30.  
  31. LISTING 2: SOURCE CODE PRODUCED BY SOURCER
  32.  
  33.                                         org   100h
  34. 7277:0100   OE                          push  cs  
  35. 7277:0101   1F                          pop   ds
  36. 7277:0102   B4 2A                       mov   ah,2Ah; ''
  37. 7277:0104   CD 21                       int   21h; DOS Services  ah=function 2Ah
  38.                                                  ;  get date, cx=year, dx=mon/day
  39. 7277:0106   B9 000C                     mov   cx,0Ch
  40. 7277:0109   BE 0122                     mov   si,122h
  41. 7277:010C                     locloop1:          ;  xref 7277:0115
  42. 7277:010C   FE CE                       dec   dh
  43. 7277:010E   74 07                       jz    loc3; Jump if zero
  44. 7277:0110                     loc2:              ;  xref 7277:0113
  45. 7277:0110   AC                          lodsb    ; String [si] to al
  46. 7277:0111   3C 24                       cmp   al,24h; '$'
  47. 7277:0113   75 FB                       jne   loc2; Jump if not equal 
  48. 7277:0115   E2 F5                       loop  locloop1; Loop if cx > 0
  49. 7277:0117                     loc3:              ;  xref 7277:010E
  50. 7277:0117   8B D6                       mov   dx,si
  51. 7277:0119   B4 09                       mov   ah,9
  52. 7277:011B   CD 21                       int   21h; DOS Services  ah=function 09h
  53.                                                  ;  display char string at ds:dx
  54. 7277:011D   B8 4C00                     mov   ax,4C00h
  55. 7277:0120   CD 21                       int   21h;  DOS Services  ah=function 4Ch
  56.                                                  ;   terminate with al=return code 
  57. 7277:0122   4A 61 6E 75 61 72 data1     db    'January$';   xref 7277:011B
  58. 7277:0128   79 24 
  59. 7277:012A   46 65 62 72 75 61           db    'February$'
  60. 7277:0130   72 79 24
  61. 7277:0133   4D 61 72 63 68 24           db    'March$'
  62. 7277:0139   41 70 72 69 6C 24           db    'April$'
  63. 7277:013F   4D 61 79 24                 db    'May$'
  64.                                         ... etc. 
  65.  
  66. LISTING 3: SOURCE CODE PRODUCED BY DISDOC
  67.  
  68.               org    100h
  69.               push   cs                      ;0600:0100 0e
  70.               pop    ds                      ;0600:0101 1f
  71.               mov    ah,2ah                  ;0600:0102 b42a
  72.               int    21h                     ;    ;DOS:2a-get date, DH /
  73.                                              ;       DL / CX
  74.               mov    cx,000ch                ;0600:0106 b90c00
  75.               mov    si,0122h                ;0600:0109 be2201
  76. b0610c:       dec    dh                      ;0600:010c fece
  77.               je     b06117                  ;0600:010e 7407
  78.                                              ;    ;Jump if equal  (ZF=1)
  79. b06110:       lodsb                          ;0600;0110 ac
  80.                                              ;    ;Load AL with DS:[SI]
  81.               cmp    al,24h  ;($)            ;0600:0111 3c24
  82.               jne    b06110                  ;0600:0113 75fb
  83.                                              ;    ;Jump not equal (ZF=0)
  84.               loop   b0610c                  ;0600:0115 e2f5
  85.                                              ;    ;Dec CX;Loop if CX>0
  86. b06117:       mov    dx,si                   ;0600:0117 8bd6
  87.               mov    ah,09                   ;0600:0119 b409
  88.               int    21h                     ;0600:011b cd21
  89.                                              ;    ;DOS:09-output string
  90.                                              ;      in DS:DX
  91.               db     0b8,00,4c,0cdh          ;0600:011d ..L.
  92.               db     '!January$February$Mar' ;0600:0121
  93.               db     'ch$April$May$June$Jul' ;0600:0136
  94.               ...etc.
  95.  
  96.  
  97. LISTING 4: SOURCE CODE PRODUCED BY MASTERKEY
  98.  
  99. H00100: PUSH   CS                                 ;00100 0E
  100.         POP    DS        ;DS_SGMT_CHG             ;00101 1F
  101.         MOV    AH,2Ah                             ;00102 B42A  *
  102.         INT    21h       ;1-Date                  ;00104 CD21  !
  103.         MOV    CX,000Ch                           ;00106 B90C00 _
  104.         MOV    SI,0122h                           ;00109 BE2201 "
  105. H0010C: DEC    DH                                 ;0010C FECE  _
  106.         JZ     H00117    ;   . . . . . . . . .    ;0010E 7407  t
  107. H00110: LODSB                                     ;00110 AC
  108.         CMP    AL,24h                             ;00111 3C24  <$
  109.         JNZ    H00110    ;   . . . . . . . . .    ;00113 75FB  u
  110.         LOOP   H0010C                             ;00115 E2F5  _
  111. H00117: MOV    DX,SI                              ;00117 8BD6  _
  112.         MOV    AH,09h                             ;00119 B409  _
  113.         INT    21h       ;1-DisplayString         ;0011B CD21  !
  114.         MOV    AX,4C00h                           ;0011D B8004C _L
  115.         INT    21h       ;2-TERMwRtnCde           ;00120 CD21  !
  116.         DB     "January$February$March$April$May" ;00122
  117.         ... etc.
  118.  
  119. LISTING 5: SOURCE CODE PRODUCED BY MD86 
  120.  
  121.                             ORG   00100H
  122. 00100:0E            EX      PUSH  CS
  123. 00101:1F                    POP   DS
  124. 00102:B42ACD21              MSDOS GDATE               ;Get system date.
  125. 00106:B90C00                MOV   CX,OFFSET 0CH
  126. 00109:BE2201                MOV   SI,OFFSET L0122H
  127. 0010C:FECE          L010CH  DEC   DH
  128. 0010E:7407                  JZ    L0117H
  129. 00110:AC            L0110H  LODSB                     ;Load AL with byt at DS:SI ++.
  130. 00111:3C24                  CMP   AL,'$'
  131. 00113:75FB                  JNZ   L0110H
  132. 00115:E2F5                  LOOP  L010CH              ;Dec CX, loop if CX<>0.
  133. 00117:8BD6          L0117H  MOV   DX,SI
  134. 00119:B409CD21              MSDOS OUTSTR              ;Display string at (DS:DX).    
  135. 0011D:B8004C                MOV   AX,OFFSET 4C00H
  136. 00120:CD21                  MSDOS                     ;Terminate a process.
  137. 00122:4A616E756172  L0122H  DB    'Januray$'
  138. 0012A:466562727561          DB    'February$'
  139. 00133:4D6172636824          DB    'March$'
  140. 00139:417072696C24          DB    'April$'
  141. 0013F:4D617924              ... etc.
  142.  
  143. LISTING 6: SOURCE CODE PRODUCED BY SNOOP
  144.  
  145.             PUSH  CS                 ;push code segment
  146. 0000:0101   POP   DS                 ;pop stack into DS
  147. 0000:0102   MOV   AH,02AH            ;move immediate data to AH
  148. 0000:0104   INT   021H               ;DOS 2A: get date
  149. 0000:0106   MOV   CX,OFFSET 0000CH   ;move immediate data to CX
  150. 0000:0109   MOV   SI,OFFSET 00122H   ;move immediate data to SI
  151. L0000_010C: DEC   DH                 ;referenced from 0000:0115
  152. 0000:010E   JE    L0000_0117         ;jump short if equal
  153. L0000_0110: LODSB                    ;referenced from 0000:0113
  154. 0000:0111   CMP   AL,024H            ;compare immediate byte from AL
  155. 0000:0113   JNE   L0000_0110         ;jump short if not equal
  156. 0000:0115   LOOP  L0000_010C         ;dec CX jump short on CX<>0
  157. L0000_0117: MOV   DX,SI              ;referenced from 0000:010E
  158. 0000:0119   MOV   AH,009H            ;move immediate data to AH
  159. 0000:011B   INT   021H               ;DOS 09: print string         
  160. 0000:011D   MOV   AX,OFFSET 04C00H   ;move immediate data to AX
  161. 0000:0120   INT   021H               ;DOS 4C: terminate a process
  162. 0000:0122   DEC   DX                 ;decrement word register by 1
  163. 0000:0123   DB    061H               ;pop DI,SI,BP,SP,BX,DX,CX,AX
  164. 0000:0124   DB    06EH               ;output byte [SI] to port DX
  165. 0000:0125   JNE   L0000_0188         ;jump short if not equal
  166. 0000:0127   JB    L0000_01A2         ;jump short if carry
  167. 0000:0129   DB    '$February$March$' ;
  168. 0000:0139   DB    'April$May$June$J' ;
  169.             ...etc.
  170.  
  171.