用汇编实现256以内的三个数的加减乘除运算
时间有限,就做了这个,有不足之处,还望指点,谢谢! QQ:1041176269 黑白君
以下程序,是实现三个任意小于256的数的加减乘除运算,并且结果不超过256(本来想设置一个循环判断的,但由于时间限制,就暂时这样吧)
;本程序实现的主要功能:三位数以内的加减乘除。(注:除法中舍去小数,即只进行取整操作)
;
;
;思路:
; 1.用dos10号功能,从键盘录入三个数
; 2.每输入一个数对该数进行一次判断
; 3.根据判断的结果对三个数进行不同的操作处理
;
;
;data segments1 db "Please input x:$"s2 db "Please input y:$"s3 db "Please input z:$"s4 db "Please input methods(+-*/):$"e db "error!$"ex db "input x error!$"ey db "input y error!$"ez db "input z error!$"ou db "The last answer is:$"x db 4,?,5 dup(?)y db 4,?,5 dup(?)z db 4,?,5 dup(?)w db ?,?f1 db ?f2 db ?x1 db ? ;存xy1 db ? ;存yz1 db ? ;存zk1 db ?k2 db ?data endsstack segmentstack endscode segmentassume ds:data,cs:code,ss:stack
start:mov ax,datamov ds,axmov ax,stackmov ss,ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;输入三个数,对三个数进行操作;;;;;;;;;;;;;;;;;;;;;;;;;;;
main0:call inx ;输入三个数set1:call input ;输入运算符
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;对输入的运算符进行判断;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mainf1:cmp f1,'+'jz call_01cmp f1,'-'jz call_02cmp f1,'*'jz call_03cmp f1,'/'jz call_04jmp error1
mainf2:cmp f2,'+'jz call_11cmp f2,'-'jz call_12cmp f2,'*'jz call_13cmp f2,'/'jz call_14jmp error1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;判断结果的大小,分别进行输出;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
output1: lea dx,oumov ah,9int 21h ;The last answer is:cmp bx,0jl fu1 ;若结果为负,则跳转至fu1处进行输出cmp bx,100jge bigger1 ;若结果大于等于100,则跳转至bigger1处进行输出 cmp bx,10jge big1 ;若结果大于等于10,则跳转至big1处进行输出;否则,直接输出mov dl,bladd dl,30hmov ah,2int 21hjmp out1 ;结束程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入三个数;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
inx: ;输入xlea dx,s1mov ah,9int 21h ;Please input x:lea dx,xmov ah,10int 21hmov bl,x+1cmp bl,0jz errorx ;如果位数为0,则跳转至报错处errorx;根据x+2号单元的值对输入的字符进行一个判断,从而确定x的正负mov bl,x+2cmp bl,'-'jz fushuchul;x<0
;若x不为负数,则先对其位数进行处理mov bl,x+1cmp bl,1jz weix1cmp bl,2jz weix2cmp bl,3jz weix3jmp errorx ;若x位数超过3位,则跳转至错误处errorxiny: ;输入ymov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hlea dx,s2mov ah,9int 21h ;Please input y:lea dx,ymov ah,10int 21hmov bl,y+1cmp bl,0jz errory ;如果位数为0,则跳转至报错处errory;根据y+2号单元的值对输入的字符进行一个判断,从而确定y的正负mov bl,y+2cmp bl,'-'jz fushuchuly;y<0
;若y不为负数,则先对其位数进行处理mov bl,y+1cmp bl,1jz weiy1cmp bl,2jz weiy2cmp bl,3jz weiy3 jmp errory ;若y位数超过3位,则跳转至错误处erroryinz: ;输入zmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hlea dx,s3mov ah,9int 21h ;Please input z:lea dx,zmov ah,10int 21hmov bl,z+1cmp bl,0jz errorz ;如果位数为0,则跳转至报错处errorz;根据z+2号单元的值对输入的字符进行一个判断,从而确定z的正负mov bl,z+2cmp bl,'-'jz fushuchulz;y<0
;若z不为负数,则先对其位数进行处理mov bl,z+1cmp bl,1jz weiz1cmp bl,2jz weiz2cmp bl,3jz weiz3jmp errorz ;若y位数超过3位,则跳转至错误处errorzinn:mov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hret ;返回至断点处,继续执行主程序,也就意味着三个数输入结束
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入两个运算符;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
input: lea dx,s4mov ah,9int 21h ;Please input methods(+-*/):mov ah,1int 21hmov f1,almov ah,1int 21hmov f2,almov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hret ;返回至断点处,继续执行主程序,也就意味着两个运算符输入结束
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X Y -> W;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
add1:mov al,x1add al,y1mov w,alretsub1:mov al,x1sub al,y1mov w,alretimul1:mov al,x1mov bl,y1imul blmov w,alretidiv1:mov al,x1cbwmov bl,y1idiv blmov w,alret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;W Z -> BX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
add2:mov al,wadd al,z1cbwmov bx,axretsub2:mov ah,0mov al,wsub al,z1sbb ah,0mov bx,axretimul2:mov al,wmov bl,z1imul blmov bx,axretidiv2:mov al,wcbwmov bl,z1idiv blcbwmov bx,axret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;call_01:call add1jmp mainf2 ;若第一个运算符为加号,则执行add1,并且返回mainf2对第二个运算符进行判断
call_02:call sub1jmp mainf2 ;若第一个运算符为减号,则执行sub1,并且返回mainf2对第二个运算符进行判断
call_03:call imul1jmp mainf2 ;若第一个运算符为乘号,则执行imul1,并且返回mainf2对第二个运算符进行判断
call_04:call idiv1jmp mainf2 ;若第一个运算符为除号,则执行idiv1,并且返回mainf2对第二个运算符进行判断call_11:call add2jmp output1 ;若第二个运算符为加号,则执行add2,并且返回output1对结果进行判断
call_12:call sub2jmp output1 ;若第二个运算符为减号,则执行sub2,并且返回output1对结果进行判断
call_13:call imul2jmp output1 ;若第二个运算符为乘号,则执行imul2,并且返回output1对结果进行判断
call_14:call idiv2jmp output1 ;若第二个运算符为除号,则执行idiv2,并且返回output1对结果进行判断;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入的运算符有误;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error1:lea dx,emov ah,9int 21hmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hjmp set1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入的x每一位不合法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
errorx:mov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hlea dx,exmov ah,9int 21hmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hjmp inx
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入的y每一位不合法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
errory:mov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hlea dx,eymov ah,9int 21hmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hjmp iny
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入的z每一位不合法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
errorz:mov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hlea dx,ezmov ah,9int 21hmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hjmp inz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;结果小于0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fu1: mov dl,'-'mov ah,2int 21hneg bxcmp bx,100jge bigger1cmp bx,10jge big1mov dl,bladd dl,30hmov ah,2int 21hjmp out1 ;结束程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;结果大于10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
big1: mov ax,bxmov bl,10idiv blmov bh,ahmov bl,almov dl,bladd dl,30hmov ah,2int 21hmov dl,bhadd dl,30hmov ah,2int 21hjmp out1 ;结束程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;结果大于100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bigger1:mov ax,bxmov cl,100idiv clmov k1,almov al,ahcbwmov cl,10idiv clmov k2,almov bl,ahmov dl,k1add dl,30hmov ah,2int 21hmov dl,k2add dl,30hmov ah,2int 21hmov dl,bladd dl,30hmov ah,2int 21hjmp out1 ;结束程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断x的每一位是否合法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
weix:cmp bl,30hjl errorxcmp bl,39hjg errorxret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断y的每一位是否合法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
weiy:cmp bl,30hjl errorycmp bl,39hjg erroryret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断z的每一位是否合法;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
weiz:cmp bl,30hjl errorzcmp bl,39hjg errorzret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;x不为负数时的不同位数处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
weix1: ;x为一位数mov bl,x+2call weix ;判断第一位是否合法sub bl,30hmov x1,bl ;把x的值存入x1中jmp inyweix2: ;x为两位数mov bl,x+2call weix ;判断第一位是否合法sub bl,30hmov al,blmov bl,x+3call weix ;判断第二位是否合法sub bl,30hmov cl,10imul cladd al,blmov x1,al ;把x的值存入x1中jmp inyweix3: ;x为三位数mov bl,x+2call weixsub bl,30hmov al,bl ;第一位合法,把第一位送入al中mov bl,x+3call weixsub bl,30hmov k1,bl ;第二位合法,把第二位送入k1中mov bl,x+4call weixsub bl,30h ;第三位合法,把第三位放入bl中mov cl,100imul clmov k2,al ;第一位乘100放入k2中mov al,k1 ;把第二位送入al中mov cl,10imul cladd k2,al ;第二位a1乘10并与第一位k2相加,结果存入k2add k2,bl ;第三位bl与k2相加,结果存入k2mov bl,k2mov x1,bl ;把x的值存入x1中jmp iny
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;x为负;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fushuchul: ;根据x+1号单元的值,算出x的位数mov bl,x+1dec bl ;x的位数为输入字符个数-1(负号占用第一个缓冲区)cmp bl,0jz errorx ;若字符数为0,则跳转至错误处errorxcmp bl,1jz fweix1cmp bl,2jz fweix2cmp bl,3jz fweix3jmp errorx ;若x的位数超过3位,则跳转至错误处errorx
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;x为负时的不同位数处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fweix1: ;x为一位数mov bl,x+3call weix ;判断第一位是否合法sub bl,30hmov x1,bl ;把x的值存入x1中jmp inyfweix2: ;x为两位数mov bl,x+3call weix ;判断第一位是否合法sub bl,30hmov al,blmov bl,x+4call weix ;判断第二位是否合法sub bl,30hmov cl,10imul cladd al,blmov x1,al ;把x的值存入x1中jmp inyfweix3: ;x为三位数mov bl,x+3call weixsub bl,30hmov al,bl ;第一位合法,把第一位送入al中mov bl,x+4call weixsub bl,30hmov k1,bl ;第二位合法,把第二位送入k1中mov bl,x+5call weixsub bl,30h ;第三位合法,把第三位放入bl中mov cl,100imul clmov k2,al ;第一位乘100放入k2中mov al,k1 ;把第二位送入al中mov cl,10imul cladd k2,al ;第二位a1乘10并与第一位k2相加,结果存入k2add k2,bl ;第三位bl与k2相加,结果存入k2mov bl,k2mov x1,bl ;把x的值存入x1中jmp iny
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;y不为负数时的不同位数处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
weiy1: ;y为一位数mov bl,y+2call weiy ;判断第一位是否合法sub bl,30hmov y1,bl ;把y的值存入y1中jmp inzweiy2: ;y为两位数mov bl,y+2call weiy ;判断第一位是否合法sub bl,30hmov al,blmov bl,y+3call weiy ;判断第二位是否合法sub bl,30hmov cl,10imul cladd al,blmov y1,al ;把y的值存入y1中jmp inzweiy3: ;y为三位数mov bl,y+2call weiysub bl,30hmov al,bl ;第一位合法,把第一位送入al中mov bl,y+3call weiysub bl,30hmov k1,bl ;第二位合法,把第二位送入k1中mov bl,y+4call weiysub bl,30h ;第三位合法,把第三位放入bl中mov cl,100imul clmov k2,al ;第一位乘100放入k2中mov al,k1 ;把第二位送入al中mov cl,10imul cladd k2,al ;第二位a1乘10并与第一位k2相加,结果存入k2add k2,bl ;第三位bl与k2相加,结果存入k2mov bl,k2mov y1,bl ;把y的值存入y1中jmp inz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;y为负;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fushuchuly: ;根据y+1号单元的值,算出y的位数mov bl,y+1dec bl ;y的位数为输入字符个数-1(负号占用第一个缓冲区)cmp bl,0jz errory ;若字符数为0,则跳转至错误处errorycmp bl,1jz fweiy1cmp bl,2jz fweiy2cmp bl,3jz fweiy3jmp errory ;若y的位数超过3位,则跳转至错误处errory
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;y为负时的不同位数处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fweiy1: ;y为一位数mov bl,y+3call weiy ;判断第一位是否合法sub bl,30hmov y1,bl ;把y的值存入y1中jmp inzfweiy2: ;y为两位数mov bl,y+3call weiy ;判断第一位是否合法sub bl,30hmov al,blmov bl,y+4call weiy ;判断第二位是否合法sub bl,30hmov cl,10imul cladd al,blmov y1,al ;把y的值存入y1中jmp inzfweiy3: ;y为三位数mov bl,y+3call weiysub bl,30hmov al,bl ;第一位合法,把第一位送入al中mov bl,y+4call weiysub bl,30hmov k1,bl ;第二位合法,把第二位送入k1中mov bl,y+5call weiysub bl,30h ;第三位合法,把第三位放入bl中mov cl,100imul clmov k2,al ;第一位乘100放入k2中mov al,k1 ;把第二位送入al中mov cl,10imul cladd k2,al ;第二位a1乘10并与第一位k2相加,结果存入k2add k2,bl ;第三位bl与k2相加,结果存入k2mov bl,k2mov y1,bl ;把y的值存入y1中jmp inz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;z不为负数时的不同位数处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
weiz1: ;z为一位数mov bl,z+2call weiz ;判断第一位是否合法sub bl,30hmov z1,bl ;把z的值存入z1中jmp innweiz2: ;z为两位数mov bl,z+2call weiz ;判断第一位是否合法sub bl,30hmov al,blmov bl,z+3call weiz ;判断第二位是否合法sub bl,30hmov cl,10imul cladd al,blmov z1,al ;把z的值存入z1中jmp innweiz3: ;z为三位数mov bl,z+2call weizsub bl,30hmov al,bl ;第一位合法,把第一位送入al中mov bl,z+3call weizsub bl,30hmov k1,bl ;第二位合法,把第二位送入k1中mov bl,z+4call weizsub bl,30h ;第三位合法,把第三位放入bl中mov cl,100imul clmov k2,al ;第一位乘100放入k2中mov al,k1 ;把第二位送入al中mov cl,10imul cladd k2,al ;第二位a1乘10并与第一位k2相加,结果存入k2add k2,bl ;第三位bl与k2相加,结果存入k2mov bl,k2mov z1,bl ;把z的值存入z1中jmp inn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;z为负;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fushuchulz: ;根据z+1号单元的值,算出z的位数mov bl,z+1dec bl ;z的位数为输入字符个数-1(负号占用第一个缓冲区)cmp bl,0jz errorz ;若字符数为0,则跳转至错误处errorzcmp bl,1jz fweiz1cmp bl,2jz fweiz2cmp bl,3jz fweiz3jmp errorz ;若z的位数超过3位,则跳转至错误处errorz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;z为负时的不同位数处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
fweiz1: ;z为一位数mov bl,z+3call weiz ;判断第一位是否合法sub bl,30hmov z1,bl ;把z的值存入z1中jmp innfweiz2: ;z为两位数mov bl,z+3call weiz ;判断第一位是否合法sub bl,30hmov al,blmov bl,z+4call weiz ;判断第二位是否合法sub bl,30hmov cl,10imul cladd al,blmov z1,al ;把z的值存入z1中jmp innfweiz3: ;z为三位数mov bl,z+3call weizsub bl,30hmov al,bl ;第一位合法,把第一位送入al中mov bl,z+4call weizsub bl,30hmov k1,bl ;第二位合法,把第二位送入k1中mov bl,z+5call weizsub bl,30h ;第三位合法,把第三位放入bl中mov cl,100imul clmov k2,al ;第一位乘100放入k2中mov al,k1 ;把第二位送入al中mov cl,10imul cladd k2,al ;第二位a1乘10并与第一位k2相加,结果存入k2add k2,bl ;第三位bl与k2相加,结果存入k2mov bl,k2mov z1,bl ;把z的值存入z1中jmp inn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
out1:mov ah,4chint 21h
code ends
end start
1.10以内的运行结果:
2.大于10,小于256的运行结果:
3.小于0,但大于-256的运行结果:
时间有限,就做了这个,有不足之处,还望指点,谢谢! QQ:1041176269 黑白君
用汇编实现256以内的三个数的加减乘除运算相关推荐
- sicily 1050——5个数通过加减乘除运算得到目标数
/*采用DFS,求5个数可否加减乘除运算得到目标数,否则输出可得到的小于目标数的最大数 //回溯思路是这样的,5个数,先任意找2个数进行加减乘除,把这2个数运算后的结果当做一个数,按相同的方法搜下去 ...
- 用java写了一个计算器(两个数的加减乘除运算)
1.没有封装,用一个方法实现 package dddd; import java.util.Scanner; /*题目要求:整形计算器1.通过键盘输入两个数计算根据要求打印结果2.使用到scanner ...
- 现一个简单计算器,实现两个数的“加减乘除”运算。
输入:3.0+4.0 输出:3.0000+4.0000=7.0000 #include <stdio.h> int main() {double n1 = 0.0;double n2 = ...
- c语言两个小数加减乘除,加减乘除英语 c语言计算两个数的加减乘除?
加减乘除的英文单词 找了N久也米找到 谁能弄一个健全点的英文符号大典 用法用中文写啊 我使学. #include int main(){ float x,y,a,b,c,d; printf("inpu ...
- 题目: 某学校需要一个能给学领前儿童自动出三个数加减法的算术题的程序,要求在运算过程中只能使用20以内的加减法且不能出现负数,并且未知数可以在等式的任何一位, 如 3 + 4 – 2 = ( ), 8
题目: 某学校需要一个能给学领前儿童自动出三个数加减法的算术题的程序,要求在运算过程中只能使用20以内的加减法且不能出现负数,并且未知数可以在等式的任何一位, 如 3 + 4 – 2 = ( ), 8 ...
- 三个数降序排列(汇编)
问题描述 将X.Y.Z三个数按降序排序 数据段定义 X DB 20H Y DB 50H Z DB 30H 大致思路 AH-最大值 AL-中间值 BH–最小值 如果X > Y 继续判断Y是否大于Z ...
- 汇编原理自我总结(三)
汇编原理自我总结(三) 第十一章 标志寄存器 在8086CPU中,是一种特殊的寄存器,叫做flag.作用如下: 储存相关指令的某些执行结果: 用来为CPU执行某些指令提供依据: 用来控制CPU的相关工 ...
- Python一亿以内的素数个数_Python编程100例(上)
注:下面的答案是我自己发挥的,新手思维,方法可能非最优,代码是在jupyter notebook中编辑运行的.想要看参考答案的可以去Python利器APP首页找,以下内容部分借鉴:https://bl ...
- python 条件语句判断连续三个数,Python_3_流程控制语句:条件判断语句(if语句),循环语句,嵌套...
第三章 流程控制语句 简介 Python代码在执行时是按照自上向下顺序执行的. 通过流程控制语句,可以改变程序的执行顺序,也可以让指定的程序反复执行多次 流程控制语句分成两大类:条件判断语句,循环语句 ...
最新文章
- Bourne Shell及shell编程
- Mac 下通过Keytool生成签名证书
- 北京化工大学计算机科专业,北京化工大学专业介绍及排名 哪些专业最好
- java 且_JAVA中逻辑运算符“|”和“”与“||”和“”的用法
- webUI自动化一元素定位
- 自己定义html中a标签的title提示tooltip
- ggplot2 | 如何对连续型变量使用离散型调色板进行配色
- python中for循环和while循环的区别_Python中for循环语句和while循环语句有何不同
- 谷歌研究员称 CVE-2020-1509 的补丁不完整,详情和 PoC 已发布
- Android 自动更新之状态栏下载状态和进度
- DPDK 框架原理简介(0001转)
- const 成员函数
- python:for循环修改list的值,应使用range
- mysql触发器更新自己表_mysql触发器实例:更新表数据之前触发
- 《程序员》沉痛悼念王江民先生
- 员工培训与开发实训心得体会_人力资源管理实训心得体会
- 【程序源代码】微信小程序商城管理系统(Java后台+微信小程序)最新版
- Sketch学会这五招,快速提升工作效率!
- 诺基亚7.2 刷入第三方ROM
- 计算机应用教程第9,计算机应用教程