回覆列表
  • 1 # 藍風24

    給你個五位數相加的程式吧 如果有具體要求請做相應修改

    data segment

    in_msg1 db "please input the first number(5 bit) :","$" ;設定輸入提示資訊1

    in_dat1 db 6,0,6 dup(0) ;設定輸入緩衝區1

    in_msg2 db 0ah,0dh,"please input the second number(5 bit):","$" ;設定輸入提示資訊2

    in_dat2 db 6,0,6 dup(0) ;設定輸入緩衝區2

    out_msg db 0ah,0dh,"the sum is:",20h ;設定輸出提示資訊

    out_dat db 6 dup(0),"$" ;設定輸出緩衝區ata ends

    code segment

    assume cs:code,ds:data

    start:mov ax,data

    mov ds,ax

    mov dx,offset in_msg1

    mov ah,9

    int 21h ;輸出提示資訊

    mov dx,offset in_dat1

    mov ah,0ah

    int 21h ;輸入第一個加數

    mov dx,offset in_msg2

    mov ah,9

    int 21h ;輸出提示資訊,提示輸入第2個數

    mov dx,offset in_dat2

    mov ah,0ah

    int 21h ;輸入第二個加數

    mov si,offset in_dat1 ;設定第一加數的指標

    mov di,offset in_dat2 ;設定第二加數的指標

    mov bx,offset out_dat ;設定結果的指標

    add si,6 ;將指標指向第一加數的個位數(最後一個數)

    add di,6 ;將指標指向第二加數的個位數(最後一個數)

    add bx,5 ;將指標指向結果的個位數(最後一個數)

    clc

    mov ah,0

    mov cx,5 ;清除進位標誌,並設定迴圈次數

    lop1: mov al,[si]

    adc al,[di] ;加數一和加數二相加,

    aaa ;結果進行分離BCD加法調整

    mov [bx],al ;相加結果送結果儲存區

    dec si

    dec di

    dec bx ;三個指標上移,指向前一位數。

    loop lop1

    adc byte ptr [bx],0

    mov cx,6

    mov bx,offset out_dat

    lop2: mov al,[bx]

    and al,0fh

    add al,30h ;得到的結果進行ASCII碼轉換。

    mov [bx],al

    inc bx

    loop lop2

    mov dx,offset out_msg ;將提示資訊及運算結果輸出

    mov ah,9

    int 21h

    mov ah,4ch

    int 21h

    code ends

    end start

  • 中秋節和大豐收的關聯?
  • 任務驅動型作文怎麼寫才能得高分?