您的位置:程序门 -> 其他开发语言 -> 汇编语言



关于键盘输入1位数的加减乘除程序


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于键盘输入1位数的加减乘除程序
发表于:2007-06-27 23:40:45 楼主
请大家教教我啊!!
发表于:2007-06-28 02:09:401楼 得分:0
问题不明确,请把问题讲清楚。
发表于:2007-06-28 16:44:572楼 得分:0
例如输入5+3回车
                      显示8

===============


其實這題的關鍵點不在於運算,而在於運算後的結果顯示於屏幕上!

原理和十進數顯示於屏幕(除10取余,余數加30h進棧,顯示時循環出棧)上是一樣的。。。。
发表于:2007-07-02 03:42:403楼 得分:0
这道题没有什么难点,只是关系有些繁杂罢了,楼主先自己做做吧!输入输出问题可以参阅:《dos程序员参考手册》中的相关章节。如果程序有问题,大家可以帮你修改。
发表于:2007-07-02 09:57:024楼 得分:0
的确是有点简单,不过这也是汇编中的一个基本问题,它在于三个问题的解决上(算法)
1   速度或效率最高
2   除0问题
3   反向互补(加减,乘除)
如果是这样问题就有点意思了
发表于:2007-07-05 20:24:235楼 得分:0
www.codeproject.com   www.codeguru.com   不少代码,搜
发表于:2007-07-07 17:41:336楼 得分:0
该回复于2007-12-28 12:41:49被管理员或版主删除
发表于:2007-07-07 17:41:567楼 得分:0
该回复于2007-12-28 12:41:49被管理员或版主删除
发表于:2007-07-07 17:42:188楼 得分:0
该回复于2007-12-28 12:41:49被管理员或版主删除
发表于:2007-10-29 23:50:379楼 得分:0
data segment
data1 db 5   dup(?)
data2 db 5   dup(?)
data ends

code segment
assume   cs:code,ds:data

start:
mov ax,data
mov ds,ax
mov cx,0000h
mov si,offset   data1
mov bp,offset   data2
input1: mov ah,01h
int 21h
cmp   al,0dh           ;用回车判断是否输入结束
  je   out1                     ;输入结束,转l1
mov [si],al
  inc   si                   ;输入未结束,则继续输入
  jmp   input1

input2:  
mov   ah,01h
  int   21h                 ;输入字符
  cmp   al,0dh           ;用回车判断是否输入结束
  je   l1                   ;输入结束,转l2
mov   [bp],al
  inc   bp                   ;输入未结束,则继续输入  
  jmp   input2
out1:
mov   ah   ,   02h
mov dl   ,   0ah ;lf换行不回车,
int   21h

mov ah,02h
mov dl,'+'
int 21h
mov   ah   ,   02h
mov dl   ,   0ah ;lf换行不回车,
int   21h
mov dl,0dh
int 21h
jmp input2

l1:   mov   ah   ,   02h
mov dl   ,   0ah ;lf换行不回车,
int   21h
mov ah,02h
mov dl,'='
int 21h

mov al   ,   data1   +   1 ;以下是进行低位运算,cl为低位的进位
sub al   ,   30h
mov bl   ,   data2   +   1
sub bl   ,   30h
add al   ,   bl
cmp   al   ,   0ah
                jb             lowb                                                           ;低于就转移,cf   =   1
sub al   ,   0ah
add cl   ,   01h ;有进位
lowb:       add           al   ,   30h
mov data2   +   2   ,   al

mov al   ,   data1 ;以下是进行高位运算,ch为高位的进位
sub al   ,   30h
mov bl   ,   data2
sub bl   ,   30h
add al   ,   bl
add al   ,   cl ;加上低位进位
cmp   al   ,   0ah
                jb             highb                                                         ;低于就转移,cf   =   1
sub al   ,   0ah
mov ch   ,   01h
highb:     add   al   ,   30h
add ch   ,   30h
mov data2   +   1   ,   al
mov data2   ,   ch

mov dl   ,   data2
int   21h
mov dl   ,   data2   +   1
int   21h
mov dl   ,   data2   +   2
int   21h
mov ah,4ch
int 21h

code ends
end start


给你一个两位加法的,从键盘输入加数和被加数



快速检索

最新资讯
热门点击