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...