回覆列表
  • 1 # lanfengkd

    以1567為例,,,我是四川大學的,你也是吧

    DATAS SEGMENT

    buffer1 dw 1657h

    buffer2 dw ? ;分配兩個位元組的空間

    DATAS ENDS

    CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS

    START:

    MOV AX,DATAS

    MOV DS,AX

    mov ax,[buffer1]

    and ax,0f000h

    mov cl,12

    shr ax,cl

    mov dx,ax ;至此,已將5678h(BCD)中的5(十進位制)取出,並放入dx中

    call change ;呼叫chang,將5乘以10

    mov ax,dx

    mov bx,[buffer1]

    and bx,0f00h

    mov cl,8

    shr bx,cl

    add ax,bx

    mov dx,ax

    call change

    mov ax,dx

    mov bx,[buffer1]

    and bx,00f0h

    mov cl,4

    shr bx,cl

    add ax,bx

    mov dx,ax

    call change

    mov ax,dx

    mov bx,[buffer1]

    and bx,000fh

    add ax,bx ;至此,ax中的值已是5678(十進位制),但電腦是將其以二進位制的形式儲存的,故應是0679h,二進位制就是0000011001111001

    mov buffer2,ax ;因為後面會用到ah,為避免在其過程中丟失ax中的資料,故將ax中的資料放入buffer2中

    mov cx,16

    again:shl buffer2,1 ;將已經轉換成二進位制的數逐個顯示出來

    mov dl,0

    adc dl,30h

    mov ah,2

    int 21h

    loop again

    MOV AH,4CH

    INT 21H

    change proc ;子程式change的功能是實現dx乘以10

    add dx,dx

    mov cx,dx

    add dx,dx

    add dx,dx

    add dx,cx

    ret

    change endp

    CODES ENDS

    END START

  • 中秋節和大豐收的關聯?
  • 現代戰鬥機越來越精貴,保養費驚人,那麼演習時該如何求真呢?