彙編 有符號10進製輸入輸出

2021-09-29 01:27:33 字數 4679 閱讀 2105

readsib輸入有符號十進位制整數(-128~127)出口:al=8位資料

include io.inc

.model small

.stack

.data

.code

.startup

;readsib 輸入有符號十進位制整數(-128~127)出口:al=8位資料

call readsib

int 3

.exit

end

.model small

.stack

.data

.code

.startup

;readsib 輸入有符號十進位制整數(-128~127)出口:al=8位資料

call readsib

int 3

.exit

readsib proc

push bx

push cx

xor bx,bx ;bx儲存結果

xor cx,cx ;cx為正負標誌,0為正,-1為負

mov ah,1

int 21h

cmp al,'+'

jz rsib1

cmp al,'-'

jnz rsib2

mov cx,-1

rsib1: mov ah,1

int 21h

rsib2: cmp al,'0'

jb rsib3

cmp al,'9'

ja rsib3

sub al,30h

shl bl,1

mov bh,bl

shl bl,1

shl bl,1

add bl,bh

add bl,al

jmp rsib1

rsib3:cmp cx,0

jz rsib4

neg bl ; 求補

rsib4:mov al,bl

pop cx

pop bx

retreadsib endp

end

dispsib顯示有符號十進位制資料 入口:al=8位資料

;include io.inc

.model small

.stack

.data

.code

.startup

;dispsib 顯示有符號十進位制資料 入口:al=8位資料

mov al,0ffh

call dispsib

.exit

end

.model small

.stack

.data

.code

.startup

;dispsib 顯示有符號十進位制資料 入口:al=8位資料

mov al,0ffh

call dispsib

.exit

dispsib proc

push ax

push bx

push dx

test al,al ;判斷資料是零、正數或負數

jnz dsib1

mov dl,'0' ;是零,顯示「0」後退出

mov ah,2

int 21h

jmp dsib5

dsib1:jns dsib2 ;是負數,顯示「-」

mov bx,ax

mov dl,'-'

mov ah,2

int 21h

mov ax,bx

neg al ;資料求補(絕對值)

dsib2: mov bx,10

push bx ;10壓入堆疊,作為退出標誌

dsib3:cmp al,0

jz dsib4

xor ah,ah ;擴充套件被除數ah.al

div bl

add ah,30h ;餘數(0~9)轉換為ascii碼

mov dl,ah

xor dh,dh

push dx ;資料各位先低位後高位壓入堆疊

jmp dsib3

dsib4:pop dx

cmp dl,10

je dsib5

mov ah,2

int 21h

jmp dsib4

dsib5:pop dx

pop bx

pop ax

retdispsib endp

end

readsiw輸入有符號十進位制整數 (-32768~32767) 出口:ax=16位資料

include io.inc

.model small

.stack

.data

.code

.startup

;readsiw 輸入有符號十進位制整數 (-32768~32767) 出口:ax=16位資料

call readsiw

int 3

.exit

end

.model small

.stack

.data

.code

.startup

;readsiw 輸入有符號十進位制整數 (-32768~32767) 出口:ax=16位資料

call readsiw

int 3

.exit

readsiw proc

push bx

push cx

push dx

xor bx,bx ;bx儲存結果

xor cx,cx ;cx為正負標誌,0為正,-1為負

mov ah,1

int 21h

cmp al,'+'

jz rsiw1

cmp al,'-'

jnz rsiw2

mov cx,-1

rsiw1: mov ah,1

int 21h

rsiw2: cmp al,'0'

jb rsiw3

cmp al,'9'

ja rsiw3

sub al,30h

xor ah,ah

shl bx,1

mov dx,bx

shl bx,1

shl bx,1

add bx,dx

add bx,ax

jmp rsiw1

rsiw3:cmp cx,0

jz rsiw4

neg bx

rsiw4:mov ax,bx

pop dx

pop cx

pop bx

retreadsiw endp

end

dispsiw顯示有符號十進位制資料 入口:ax=16位資料

include io.inc

.model small

.stack

.data

.code

.startup

;dispsiw 顯示有符號十進位制資料 入口:ax=16位資料

mov ax,0ffffh

call dispsiw

.exit

end

.model small

.stack

.data

.code

.startup

;dispsiw 顯示有符號十進位制資料 入口:ax=16位資料

mov ax,0ffffh

call dispsiw

.exit

dispsiw proc

push ax

push bx

push dx

test ax,ax ;判斷資料是零、正數或負數

jnz dsiw1

mov dl,'0' ;是零,顯示「0」後退出

mov ah,2

int 21h

jmp dsiw5

dsiw1:jns dsiw2 ;是負數,顯示「-」

mov bx,ax

mov dl,'-'

mov ah,2

int 21h

mov ax,bx

neg ax ;資料求補(絕對值)

dsiw2: mov bx,10

push bx ;10壓入堆疊,作為退出標誌

dsiw3:cmp ax,0

jz dsiw4

xor dx,dx ;擴充套件被除數dx.ax

div bx

add dl,30h ;餘數(0~9)轉換為ascii碼

push dx ;資料各位先低位後高位壓入堆疊

jmp dsiw3

dsiw4:pop dx

cmp dl,10

je dsiw5

mov ah,2

int 21h

jmp dsiw4

dsiw5:pop dx

pop bx

pop ax

retdispsiw endp

end

組合語言 十進位制輸入輸出

model small stack 100h data string db please input a munber s dw 0 sur dw 0 code start mov ax,data mov ds,ax mov dx,offset string 輸出字串string mov ah,09...

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

輸入8位二進位制資料readbb 實現readbb 16位二進位制資料輸入readbw 實現readbw 16位二進位制輸出dispbw 實現include io.inc model small stack data code startup dispbb 顯示8位二進位制資料 入口 al 8位資料...

Dos彙編的簡單輸入輸出

dos彙編中的輸入輸入通常是用中斷來實現的。通常彙編教程都是把中斷放到後面講解的。這樣編排雖然很科學,但是剛開始學彙編的時候會感覺艱難苦恨,程式的執行結果只能用debug檢視,還不能人機互動。這裡列舉幾個簡單的輸入輸出方式 1.字元輸出 使用int 21h中斷的02h號功能可以在螢幕輸出乙個字元,d...