读入两个数并选择加减法运算将结果输出
2012-08-03 20:08
162 查看
assume cs:code,ds:data
data segment
a db 'input the first number( >=0,<10 )',0dh,0ah,'$'
b db 0dh,0ah,'input the second number( >=0,<10 )',0dh,0ah,'$'
d db 0dh,0ah,'chose the operation',0dh,0ah,'1:add 3:sub',0dh,0ah,'$'
e db 3 dup(0),'$'
f db 0dh,0ah,'the result is: ','$'
data ends
code segment
start:
mov ax,data
MOV ds,ax
mov si,0
lea dx,a ;显示字符串:输入第一个数据
mov ah,9
int 21h
mov ah,1 ;读入第一个数据到e[0]
int 21h
mov e[si],al
lea dx,b ;显示字符串:输入第二个数据
mov ah,9
int 21h
mov ah,1 ;读入第2个数据到e[1]
int 21h
mov e[si+1],al
lea dx,d ;显示字符串:提示操作
mov ah,9
int 21h
mov ah,1 ;读入操作数
int 21h
cmp al,33h ;判断是加还是减
jne jia
jian:
mov al,e[si] ;将存的第一个操作数放到al中
mov ah,e[si+1] ;将存的第2个操作数放到ah中
cmp al,ah
jb ok ;如果第1个数小于第2个数则跳转到ok
sub al,ah
add al,30h
mov e[si+2],al
jmp s1
ok:
sub ah,al
add ah,30h ;因为两个操作数相减就会将将30h减掉如:3(33h)-1(31h)=2,这时就要加上一个30h来转化成assic码值
mov e[si+2],ah
mov bh,'-' ;本段将第1个第二数互换相减并在其前面加上一个负号
mov f[16],bh
s1:
lea dx,f ;换行
mov ah,9
int 21h
lea dx,e
add dx,2
mov ah,9
int 21h
jmp k
jia:
mov al,e[si]
mov ah,e[si+1]
add al,ah
sub al,30h ;将两个assic相加就会多出一个30h所以要减去30h
mov e[si+2],al
lea dx,f ;换行
mov ah,9
int 21h
lea dx,e
add dx,2
mov ah,9
int 21h
k:
mov ah,4ch
int 21h
code ends
end start
浏览(56) 评论 编辑 删除
data segment
a db 'input the first number( >=0,<10 )',0dh,0ah,'$'
b db 0dh,0ah,'input the second number( >=0,<10 )',0dh,0ah,'$'
d db 0dh,0ah,'chose the operation',0dh,0ah,'1:add 3:sub',0dh,0ah,'$'
e db 3 dup(0),'$'
f db 0dh,0ah,'the result is: ','$'
data ends
code segment
start:
mov ax,data
MOV ds,ax
mov si,0
lea dx,a ;显示字符串:输入第一个数据
mov ah,9
int 21h
mov ah,1 ;读入第一个数据到e[0]
int 21h
mov e[si],al
lea dx,b ;显示字符串:输入第二个数据
mov ah,9
int 21h
mov ah,1 ;读入第2个数据到e[1]
int 21h
mov e[si+1],al
lea dx,d ;显示字符串:提示操作
mov ah,9
int 21h
mov ah,1 ;读入操作数
int 21h
cmp al,33h ;判断是加还是减
jne jia
jian:
mov al,e[si] ;将存的第一个操作数放到al中
mov ah,e[si+1] ;将存的第2个操作数放到ah中
cmp al,ah
jb ok ;如果第1个数小于第2个数则跳转到ok
sub al,ah
add al,30h
mov e[si+2],al
jmp s1
ok:
sub ah,al
add ah,30h ;因为两个操作数相减就会将将30h减掉如:3(33h)-1(31h)=2,这时就要加上一个30h来转化成assic码值
mov e[si+2],ah
mov bh,'-' ;本段将第1个第二数互换相减并在其前面加上一个负号
mov f[16],bh
s1:
lea dx,f ;换行
mov ah,9
int 21h
lea dx,e
add dx,2
mov ah,9
int 21h
jmp k
jia:
mov al,e[si]
mov ah,e[si+1]
add al,ah
sub al,30h ;将两个assic相加就会多出一个30h所以要减去30h
mov e[si+2],al
lea dx,f ;换行
mov ah,9
int 21h
lea dx,e
add dx,2
mov ah,9
int 21h
k:
mov ah,4ch
int 21h
code ends
end start
浏览(56) 评论 编辑 删除
相关文章推荐
- 根据用户的选择,输出两个数的结果
- 编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
- 第九周【项目1】在第8周项1的基础上(1)再定义一目运算符 -,-c相当于0-c(2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然
- 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1、操作数为
- 华为:通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 两个数做异或运算的结果,可以反向推断出运算的是哪两个数的小技巧
- 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果。
- RxJava2 / RxAndroid2操作符ofType:根据类型选择输出结果
- 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
- 51.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果
- 商品SKU乘积运算结果的输出
- 续上一篇文章,用栈来实现:按照用户输入的rule,经过并、交、差运算后,输出字符串结果。
- 两个数的运算,结果保留n位有效数字,不足补0。
- 【华为机试题】请在123456789之间添加+号或者-号,也可以什么都不填,使得等式的运算结果等于a。要求程序输出等式成立的个数b。测试用例:a=5时,b=21。
- Prime C++ Exercise 2.11 编写程序,要求用户输入两个数——底数(base)和指数 (exponent),输出底数的指数次方的结果。
- 华为:通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 从cin读入一组词并把它们存入一个vector对象中去,如何把所有的词都改为大写形式,输出结果,每个词占一行。
- 运算符重载不影响运算符优先级,赋值是要特别注意先后顺序!i 输出结果分析
- RxJava2 / RxAndroid2操作符ofType:根据类型选择输出结果
- java中String为null及其加减法的输出结果