彙編 二進位制資料輸入輸出

2021-09-29 00:07:52 字數 4575 閱讀 6635

輸入8位二進位制資料readbb

實現readbb

16位二進位制資料輸入readbw

實現readbw

16位二進位制輸出dispbw

實現

include io.inc

.model small

.stack

.data

.code

.startup

;dispbb 顯示8位二進位制資料 入口:al=8位資料

mov al,

4ch call dispbb

.exit

end

;dispbb 顯示8位二進位制資料 入口:al=8位資料

呼叫功能號輸出的時候會影響暫存器ax

;include io.inc

.model small

.stack

.data

.code

.startup

;dispbb 顯示8位二進位制資料 入口:al=8位資料

mov al,4ch

call dispbb

.exit

dispbb proc

;邏輯左移指令 shl reg/mem,1/cl ;邏輯左移:最低位補0,最高位進入cf

;帶進製加法指令 adc

push cx

push dx

push ax

mov cx,8

again:pop ax

shl al,1

push ax

mov dl,0

adc dl,30h

mov ah,2

int 21h

loop again

pop ax

pop dx

pop cx

retdispbb endp

end

dispbb proc

push ax

push cx

push dx

mov cx,8

;不帶進製迴圈左移指令 rol

again: rol al,1

push ax

and al,01

add al,30h

mov dl,al

mov ah,02

int 21h

pop ax

loop again

pop dx

pop cx

pop ax

retdispbb endp

include io.inc

.model small

.stack

.data

.code

.startup

;readbb 輸入8位二進位制資料 出口:al=8位資料

call readbb

.exit

end

;include io.inc

.model small

.stack

.data

.code

.startup

;readbb 輸入8位二進位制資料 出口:al=8位資料

call readbb

.exit

readbb proc

push bx

push cx

rb1:xor bx,bx ;bx用於存放二進位制結果

mov cx,8 ;限制輸入字元的個數

rb2:mov ah,1

int 21h

cmp al,'0'

jb err ;小於0輸入錯誤

cmp al,'1'

ja err ;大於1輸入錯誤

sub al,'0'

shl bl,1

add bl,al

loop rb2

mov al,bl

pop cx

pop bx

reterr:push ds ;保護ds

mov ax,cs ;因資訊儲存在**段,所以需要設定ds=cs

mov ds,ax

lea dx,errmsg

mov ah,9

int 21h

pop ds

jmp rb1

errmsg db 0dh,0ah,'input error, enter again: $'

readbb endp

end

readbb proc

push bx

push cx

push dx

xor bx,bx

mov cx,8

;06h 功能直接控制台i/o 入口引數dl=0ffh(輸入請求) dl=字元(輸出請求)

;出口引數 al=輸入的字元 其中16進製制數字以字母開頭要以0開頭

rdw1:mov ah,06h

mov dl,0ffh

int 21h

jz rdw1

cmp al,30h

jb rdw1

cmp al,31h

ja rdw1

mov ah,06

mov dl,al

int 21h

sub al,30h

shl bl,1

or bl,al

loop rdw1

mov ax,bx

pop dx

pop cx

pop bx

retreadbb endp

;readbw 輸入16位二進位制資料 出口:ax=16位資料

include io.inc

.model small

.stack

.data

.code

.startup

;readbw 輸入16位二進位制資料 出口:ax=16位資料

call readbb

int 3h ;debug除錯用檢視ax暫存器的資料

.exit

end

;include io.inc

.model small

.stack

.data

.code

.startup

;readbw 輸入16位二進位制資料 出口:ax=16位資料

call readbb

int 3h

.exit

readbb proc

push bx

push cx

push dx

xor bx,bx

mov cx,16

;06h 功能直接控制台i/o 入口引數dl=0ffh(輸入請求) dl=字元(輸出請求)

;出口引數 al=輸入的字元 其中16進製制數字以字母開頭要以0開頭

rdw1:mov ah,06h

mov dl,0ffh

int 21h

jz rdw1

cmp al,30h

jb rdw1

cmp al,31h

ja rdw1

mov ah,06

mov dl,al

int 21h

sub al,30h

shl bx,1

or bl,al

loop rdw1

mov ax,bx

pop dx

pop cx

pop bx

retreadbb endp

end

dispbw顯示16位二進位制資料 入口:ax=16位資料

include io.inc

.model small

.stack

.data

.code

.startup

;readbw 輸入16位二進位制資料 出口:ax=16位資料

mov ax,1234h

call dispbw

.exit

end

.model small

.stack

.data

.code

.startup

;readbw 輸入16位二進位制資料 出口:ax=16位資料

mov ax,1234h

call dispbw

.exit

dispbw proc

push ax

push dx

push cx

mov cx,16

again:rol ax,1

push ax

and al,01h

add al,30h

mov ah,02h

mov dl,al

int 21h

pop ax

loop again

pop cx

pop dx

pop ax

retdispbw endp

end

2 39輸入輸出二進位制檔案語法細節

1抽象類inputstream和抽象類outputstream是所以讀寫二進位制資料的根類 2fileinputstream和fileoutputstream繼承的根類並且重寫根類方法 3如果試圖為不存在的檔案建立fileinputstream物件會發生異常 4不關閉檔案可能會造成資料受損,或其他程...

二進位制輸出

將1 byte 數,以二進位制輸出.注意是1byte數,如果是int之類的,應注意大小端問題.include define bytetobinarypattern d d d d d d d d define bytetobinary byte byte 0x80 1 0 byte 0x40 1 0...

輸出二進位制補碼

描述 輸入乙個整型 int 的整數,輸出它的32位二進位制補碼。輸入乙個整型整數。輸出輸出一行,即該整數的補碼表示。樣例輸入 7樣例輸出 00000000000000000000000000000111 第一位為符號位,0表示正數,1表示負數 正數的原碼,反碼,補碼相同 負數的反碼為各位取反,補碼為...