主题:求两个小的程序题目的汇编程序~~~很简单的,有兴趣的来试试~~
winboy
[专家分:0] 发布于 2007-06-21 22:09:00
1。编写程序实现从键盘读入两个5 位10进制数(1位符号位和4位数值位)并将这两个10进制数分别转换为2进制数,然后求其和,再将和以10进制数形式显示出来?
2。求二元一次方程的实根。方程如下:a(x*x)+bx+c=0(a,b,c从键盘输入)如有实根,则在屏幕上显示,如无实根,则显示“no real root”
希望大家把程序跟贴发出来,和大家一起交流 !!!!!
沙发
topzhengjie [专家分:160] 发布于 2007-06-22 20:37:00
我这里有个程序是从键盘上输入3个数输入数的大小小于500但有正负号 它实现的是(A+B)*C.虽然不同题但也是内似的.我们输入的十进制是在电脑里全部为其ASCLL码值,所一要屏蔽高为的到 原数 比如从键盘上输入 3 者在电脑里就是32H 所以就用AND评比
30H者就是 AND 32,0FH就的到2了
dseg segment
sums dw ?
buff1 dw 6 dup(0)
buff2 db 3 dup(0)
buff3 db 15,15 dup(0);定义缓冲区
tips1 db 'Please input number A,B,C !',0ah,0dh,'$'
tips2 db 0ah,0dh,'(A+B)*C=$'
dseg ends
sseg segment stack
db 100 dup(0)
sseg ends
cseg segment
assume cs:cseg,ds:dseg,ss:sseg
start: mov ax,dseg
mov ds,ax
;--------------------------------------输入处理
mov dx,offset tips1
mov ah,09h
int 21h
mov dx,offset buff3
mov ah,0ah
int 21h
mov di,offset buff1
mov si,offset buff3
mov cx,3
L1: mov al,[si+3]
and al,0fh
mov bl,100;得到百位
mul bl
mov [di],ax
mov al,[si+4]
and al,0fh
mov bl,10;得到十位
mul bl
add [di],ax
mov al,[si+5]
add si,5
and al,0fh;得到个位
add [di],ax
add di,2
loop L1
mov di,offset buff2
mov si,offset buff3
mov cx,3
L2: mov al,[si+2]
mov [di],al
inc di
add si,5;从新把值给SI
loop L2
;--------------------------------------计算处理
mov dx,offset tips2
mov ah,09h
int 21h
mov di,offset buff1;以下为提取A B的符号
mov si,offset buff2
mov ax,[di]
mov cl,[si]
cmp cl,'-'
jnz next1
neg ax
mov [di],ax
next1: mov ax,[di+2]
mov cl,[si+1]
cmp cl,'-'
jnz next2
neg ax
mov [di+2],ax
;------------------------------------------
next2: mov di,offset buff1
mov ax,[di]
mov sums,ax
mov bx,[di+2]
add sums,bx
cmp sums,0
jns next3
neg sums
jmp next4
;------------------------------------------
next3: mov cl,[si+2]
cmp cl,'-'
jnz muls
mov dl,'-'
mov ah,02h
int 21h
jmp muls
next4: mov cl,[si+2]
cmp cl,'-'
jz muls
mov dl,'-'
mov ah,02h
int 21h
muls: mov ax,sums
mov bx,[di+4]
mul bx
;--------------------------------------结果显示
mov cx,6;双字的除10区余法则
l1: mov bx,10
div bx
push dx
mov dx,0
loop l1
mov cx,6
l2: pop ax
add ax,30h
mov dl,al
mov ah,02h
int 21h
loop l2
;------------------------------------------
mov ah,4ch
int 21h
cseg ends
end start
比如从键盘上输入的写法
比如输入三个数 +123 -145 +456 输入两位数时百位补0