等做完了就把程序贴上来,权当参考吧!先占个地儿~~~
奋斗了一个星期吧?差不多,终于在交作业之前完成了,呵呵,心里那个高兴啊~~不过又有一堆其他作业要做,数理方程、电工技术……
data segment
string db 'Input:','$'
buffer db 20 dup(?)
w1 dw ? ;储存第一个数
w2 dw ? ;储存第二个数
w3 dw 1000d,100d,10d,1d;设定权值
w4 dw ?
w5 dw ?
data ends
;
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
call input ;调用输入函数
call jiafa ;调用加法函数
call cheng ;调用乘法函数
call list1 ;调用显示函数
call list2 ;调用显示函数
call list3 ;调用显示函数
mov ah,4ch
int 21h
;
input proc
lea dx,string ;传送string到DX
call showst ;显示字符串中断子程序调用
lea di,buffer ;传送Buffer地址到DI
next1: mov bx,0
lea si,w3
mov cx,5
l1: mov ah,01h
int 21h
cmp al,20h ;和空格比较,一样则跳到jump
jz jump
call ten22 ;转换
loop l1
jump: mov w1,bx ;存转换结果
next2: mov bx,0
lea si,w3
mov cx,5
l2: mov ah,01h
int 21h
cmp al,0dh ;和回车比较,一样则跳到i_exit
jz i_exit
call ten22 ;转换
loop l2
i_exit:mov w2,bx ;存转换结果
mov w4,bx ;存转换结果
ret
input endp
;
jiafa proc ;加法
mov ax,0
lea si,w2
mov ax,[si]
lea di,w1
add ax,[di]
mov w4,ax
ret
jiafa endp
;
cheng proc ;乘法
xor ax,ax
lea si,w1
mov bx,[si]
mov w5,bx
lea bx,w2
mov si,[bx]
lea bx,w5
mov ax,[bx]
mul si
mov [bx],ax
mov [bx+2],dx
ret
cheng endp
;
list1 proc ;输出加法结果
mov dl,10
call showch
mov ch,4
mov cl,4
lea si,w4
mov bx,[si]
next10:rol bx,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,39h
jle print1
add dl,07h
print1:call showch
dec ch
jnz next10
ret
list1 endp
;
list2 proc ;输出乘法前四位
mov dl,0dh
call showch
mov dl,10
call showch
mov ch,4
mov cl,4
lea si,w5
mov bx,[si+2]
next20:rol bx,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,39h
jle print2
add dl,07h
print2:call showch
dec ch
jnz next20
ret
list2 endp
;
list3 proc ;输出乘法后四位
mov dl,32
call showch
mov ch,4
mov cl,4
lea si,w5
mov bx,[si]
next30:rol bx,cl
mov dl,bl
and dl,0fh
add dl,30h
cmp dl,39h
jle print3
add dl,07h
print3:call showch
dec ch
jnz next30
ret
list3 endp
;
showch proc ;显示字符子程序
mov ah,02h
int 21h
ret
showch endp
;
showst proc ;显示字符串子程序
mov ah,09h
int 21h
ret
showst endp
;
ten22 proc ;十进制二进制转换子程序
sub al,30h
mov ah,0
mul word ptr[si]
add bx,ax
add si,2
ret
ten22 endp
;
code ends
end start
但是个人觉得写得很不好,很罗嗦。希望有高手能进来指点指点。