簡體   English   中英

x86匯編程序輸出

[英]x86 assembly program output

我們的任務是編寫一個x86匯編程序,檢查所有資本后期並打印A和O,但我不知道如何編寫程序。 我試過這個:

.MODEL SMALL
 .STACK 100H

 .DATA
    PROMPT  DB  'The Upper Case Letters from A to Z are : $'

 .CODE
   MAIN PROC
     MOV AX, @DATA                ; initialize DS 
     MOV DS, AX

     LEA DX, PROMPT               ; load and print PROMPT 
     MOV AH, 9
     INT 21H

     MOV CX, 26                   ; initialize CX

     MOV AH, 2                    ; set output function  
     MOV DL, 65                   ; set DL with A

     @LOOP:                       ; loop start
       INT 21H                    ; print character

       INC DL                     ; increment DL to next ASCII character
       DEC CX                     ; decrement CX

     JNZ @LOOP                    ; jump to label @LOOP if CXis 0

     MOV AH, 4CH                  ; return control to DOS
     INT 21H
   MAIN ENDP
 END MAIN

在打印字符之前,您可以檢查字符是A還是O ,打印, INT 21H ,如果是,或跳過INT 21H

....
LOOP:
    if( DL == 'A' )
        goto PRINT;
    if( DL != 'O' )
        goto SKIP;
PRINT:
    putc(DL);
SKIP:
...

在匯編中:

...
     @LOOP:                       ; loop start
       CMP DL, 'A'                ; if( DL == 'A' )
       JE  @PRINT                 ;   goto PRINT
       CMP DL, 'O'                ; else if( DL != 'O' )
       JNE @SKIP                  ;   goto SKIP
     @PRINT:
       INT 21H                    ; print character
     @SKIP:
       INC DL                     ; increment DL to next ASCII character
       DEC CX                     ; decrement CX
       JNZ @LOOP                  ; jump to label @LOOP if CXis 0
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM