当前位置: 代码迷 >> 汇编语言 >> 若干个汇编子程序解决方法
  详细解决方案

若干个汇编子程序解决方法

热度:5904   发布时间:2013-02-26 00:00:00.0
若干个汇编子程序
最近开始上微机原理课,写了一些小规模的程序,均调试通过。算法非常简单,供新手学习!

PUBLIC printDec,getsDec,showBuff,space,enter,getsDec2,printDec2,printBin,printHex

_cod_mine segment
assume cs:_cod_mine

;.................................................
;1、过程名:printDec
;入口参数:BX
;功能:将BX值以十进制形式输出。
;出口参数:无。
;8086模式,16bit realmode
;.................................................
printDec PROC far
pushf
  push ax
  push bx
  push dx
  push cx

  mov ax,bx
  mov bx,10
  xor cx,cx
lop10: xor dx,dx
div bx
  add dx,30H
  push dx
  inc cx
  cmp ax,0
  jz lop11  
  jmp lop10

lop11: mov ah,2
pop dx
int 21h
loop lop11

Quit10: pop cx
pop dx
  pop bx
  pop ax
popf
  ret
printDec endp
;.................子过程结束.....................

;.................................................
;2、子过程名:getsDec
;功能:输入无符号数,按回车结束,并保存在Bx中,无回显。
;入口:无,
;出口:BX
;8086,16bit real mode
;................................................
getsDec PROC far
pushf
push ax
push dx

xor dx,dx

lop20: mov ah,8
int 21h
cmp al,0dh
jz quit20
sub al,30h

push ax
mov bx,10
mov ax,dx
mul bx
mov dx,ax
pop ax

xor ah,ah
add dx,ax
jmp lop20

quit20: mov bx,dx
pop dx
pop ax
popf
ret
getsDec endp
;.................子过程结束.....................

;.................................................
;3、子过程名:getsDec2
;功能:输入带符号数,按回车结束,并保存在Bx中,无回显。
;入口:无,
;出口:BX
;8086,16bit real mode
;................................................
getsDec2 PROC far
pushf
push ax
push dx
push cx

xor dx,dx
xor cx,cx

lop30: mov ah,8
int 21h
cmp al,0dh
jz quit31
cmp al,2dH
jz s1

sub al,30h

push ax
mov bx,10
mov ax,dx
mul bx
mov dx,ax
pop ax

xor ah,ah
add dx,ax
jmp lop30

s1: mov cx,1
jmp lop30

quit31: mov bx,dx
cmp cx,1
jz s2
jmp quit30

s2: neg bx
jmp quit30

quit30: pop cx
pop dx
pop ax
popf
ret

getsDec2 endp
;.................子过程结束.....................

;.................................................
;4、过程名:printDec2
;入口参数:BX
;功能:将BX值以带符号十进制形式输出。
;出口参数:无。
;8086模式,16bit realmode
;.................................................
printDec2 PROC far
pushf
  push ax
  push bx
  push dx
  push cx
push si

  mov ax,bx
  mov bx,10
  xor cx,cx
xor si,si

cmp ax,0
jge lop40

mov si,1
neg ax

lop40: xor dx,dx
div bx
  add dx,30H
  push dx
  inc cx
  cmp ax,0
jnz lop40

lop41: cmp si,1
jnz sss
mov ax,2dh
push ax
inc cx

sss: mov ah,2
pop dx
int 21h
loop sss

Quit40: pop si
pop cx
pop dx
  pop bx
  pop ax
popf
  ret
printDec2 endp
;.................子过程结束.....................

;.................................................
;5、过程名:printBin
;入口参数:BX
;功能:将BX值以二进制形式输出。
  相关解决方案