汇编:有符号10进制输入输出
汇编:有符号10进制输入输出输入有符号十进制整数(-128~127)实现readsib显示有符号十进制整数(-128~127)实现dispsib输入有符号十进制整数(-32768~32767)实现readsiw显示有符号十进制整数(-32768~32767)实现dispsiw输入有符号十进制整数(-128~127)readsib 输入有符号十进制整数(-128~127)出口:AL=8位数据...
·
汇编:有符号10进制输入输出
输入有符号十进制整数(-128~127)
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
实现readsib
.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
ret
readsib endp
end
显示有符号十进制整数(-128~127)
dispsib 显示有符号十进制数据 入口:AL=8位数据
;include io.inc
.model small
.stack
.data
.code
.startup
;dispsib 显示有符号十进制数据 入口:AL=8位数据
mov al,0ffh
call dispsib
.exit
end
实现dispsib
.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
ret
dispsib endp
end
输入有符号十进制整数(-32768~32767)
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
实现readsiw
.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
ret
readsiw endp
end
显示有符号十进制整数(-32768~32767)
dispsiw 显示有符号十进制数据 入口:AX=16位数据
include io.inc
.model small
.stack
.data
.code
.startup
;dispsiw 显示有符号十进制数据 入口:AX=16位数据
mov ax,0ffffh
call dispsiw
.exit
end
实现dispsiw
.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
ret
dispsiw endp
end
更多推荐


所有评论(0)