彙編 字串輸入輸出 原始碼及詳細解釋

來源:互聯網
上載者:User



DATAS  SEGMENT      ;segment和ends是成對使用的偽指令,功能是定義一個段,這是在寫可被編譯器編譯的組譯工具時

;必須使用的,sement是段的開始,ends是結束
buf1   DB "Hello, $"
BBB    DB 31    ;表示緩衝區能容31個字元
      DB ?
      DB 31 DUP (?) ;這裡的31是你在資料區段開闢的空間,? 表示不對分配的儲存單元賦初值
      ;db   :定義位元組類型變數的偽指令
      ;dup():重複定義圓括弧中指定的初值,次數由前面的數值決定
      ;?:只分配儲存空間,不指定初值
      
;CRLF  DB 0AH,0DH,"$";    斷行符號換行 
DATAS ENDS

STACKS SEGMENT 
       DB      200 DUP(?) ;此處輸入堆棧段代碼
STACKS ENDS

CODES  SEGMENT
       ASSUME CS:CODES,DS:DATAS,SS:STACKS
          ;在程式中段名就相當於一個標號,它代表了段地址,該句是把名稱為"DATAS"的段的段地址送入ax
   ;不能直接用mov ds,datas。因為程式中對段名的引用,如mov ds,datas中的datas被編譯器處理為一個表示段地址的數值
   ;而8086CPU不允許將一個數值直接送到段寄存器,所以要先把datas送到ax,然後再把ax送到ds
START:  MOV AX,DATAS 
       MOV DS,AX   
       
;INT 21H是命令系統工作的意思,至於做什麼工作,就看你往AH裡面放了什麼代碼。

       ;LEA指令的功能是將源運算元、即儲存單元的有效地址(位移地址)傳送到目的運算元。 
      
       MOV AH,10      ;10號中斷,接收輸入字串,此時dx為存放字串的有效地址
       LEA DX,BBB  
       INT 21H
       
        ;下面三行是輸出"Hello,"
       LEA DX,[buf1]  ;9號中斷前提,給參數dx賦值,指定輸出字串所在的有效地址
       MOV AH,9
       INT 21H  
       
         ;下面三行是斷行符號換行
      ; LEA DX,CRLF
      ;  MOV AH,9
      ; INT 21H
       
        ;CL:在移位指令和迴圈移動指令中,存放移位次數或者迴圈移位次數。
; SI:在儲存空間定址時,作為變址寄存器。在串操作中,作為源串指標?
; SI是十六位的,它不像ax,bx,cx,dx那樣可以分為高八位,底八位,所以用mov dl,si和 mov dl,byte ptr si都是錯誤的
;直接用mov dx,si就行了,這時dx中的dl已經得到了你所要的結果
       MOV CL,BBB+1  ;擷取字串中字元的個數
       LEA SI,BBB+2  ;首地址 間接定址
         
NEXT:   MOV DX,[SI]  ;以SI中的內容為位移地址,把該地址送到dx
       MOV AH,2      ;2號中斷輸出單個字元
       INT 21H

       INC SI     ;輸出一個地址後加1
       DEC CL     ;順便減少輸出的次數
       JNZ NEXT    ; 此處輸入程式碼片段代碼 
  
       ; 把2號調用改為9號調用
       
       ; MOV BL,CL
       ; MOV [SI+BX],'$'
       ; MOV DX,SI
       ; MOV AH,9
       ; INT 21H
       MOV AH,4CH
       INT 21H
CODES  ENDS
    END START
    
  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.