回 帖 发 新 帖 刷新版面

主题:求两个小的程序题目的汇编程序~~~很简单的,有兴趣的来试试~~

1。编写程序实现从键盘读入两个5 位10进制数(1位符号位和4位数值位)并将这两个10进制数分别转换为2进制数,然后求其和,再将和以10进制数形式显示出来?

2。求二元一次方程的实根。方程如下:a(x*x)+bx+c=0(a,b,c从键盘输入)如有实根,则在屏幕上显示,如无实根,则显示“no real root”
希望大家把程序跟贴发出来,和大家一起交流 !!!!!

回复列表 (共1个回复)

沙发

我这里有个程序是从键盘上输入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    

我来回复

您尚未登录,请登录后再回复。点此登录或注册