郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

郁金香终身VIP管理员QQ150330575项目合作(有实力的+)视频教程+每月更新+QQ群
飞郁视频分享(每周更新)
查看: 1035|回复: 0

8086汇编 计算2位数字的 公约数

[复制链接]
发表于 2016-8-21 21:31:36 | 显示全部楼层 |阅读模式
DATA SEGMENT
BUFF    DB 0DH,0AH,'$'
IN_MSG1 DB 'PLEASE ENTER A NUMBER:',0DH,0AH,'$'
IN_MSG2 DB 'PLEASE ENTER ANOTHER NUMBER:',0DH,0AH,'$'
OUT_MSG DB 'THE COMMON NUMBER(S) IS(ARE):',0DH,0AH,'$'
LOAD    DB 'PRESS ANY KEY TO CONTINUE$'
DATA ENDS
CODE SEGMENT
  ASSUME   CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OFFSET IN_MSG1 ; 提示输入第一个数据
CALL DISPMSG ;调用09
CALL READSID ; 输入第一个数据
MOV BX,AX ; 保存到BX
MOV AX,OFFSET IN_MSG2 ; 提示输入第二个数据
CALL DISPMSG ;调用09
CALL READSID ; 输入第二个数据
MOV CX,AX ; 保存到CX
CALL AGAIN
MOV AX,OFFSET OUT_MSG
CALL DISPMSG
MOV AX,CX ; 保存到AX
CALL DISPSID
AGAIN PROC
CMP BX,CX ;判断第一个数字是不是大于第二个数
JNL FRONT ;跳转
XCHG BX,CX ;交换
FRONT: XOR DX,DX ;清零
MOV AX,BX ;第一个数给AX
DIV CX ;AX除CX
CMP DX,0 ;判断余数是否为0
JZ EQUAL ;等于0跳转
MOV BX,CX  ;传送
MOV CX,DX  ;传送
JMP FRONT  ;无条件跳转
EQUAL: RET
AGAIN ENDP
DISPMSG PROC           ;输出显示函数
MOV DX,AX
MOV AH,9    ;字符串输出(显示)
INT 21H
RET
DISPMSG ENDP
READSID PROC
MOV AH,1     ;单字符的接受
INT 21H
MOV DH,AL   ;保存接收到的字符
SUB DH,30H
MOV AH,1     ;单字符的接受
INT 21H
CMP AL,0DH    ;判断是不是为回车
JZ  DONE1
SUB AL,30H
SHL DH,1     ;左移一位  相当于乘以二
MOV DL,DH
SHL DH,1
SHL DH,1
ADD DH,DL    ;两数相加
ADD DH,AL
DONE1:
MOV CL,DH
MOV DX,OFFSET BUFF
MOV AH,9     ;字符串输出(显示)
INT 21H
MOV AL,CL
XOR AH,AH     ;AH清零
RET
READSID ENDP
DISPSID:
MOV BL,AL
MOV BH,1
L1:MOV AL,BL
   XOR AH,AH
   DIV BH       ;整除指令   只保存商的整数  AL存储除法操作的商,AH存储除法操作的余数
   CMP AH,0     ;判断是不是整除   如果整除就执行下去   如果不是则跳转到NEXT
   JNZ NEXT ;如果有余数 表明BH不是公约数,继续寻找下一个公约数
   MOV AL,BH  ;执行到这里 证明是整除 BH是公约数 把公约数保存到AL里边
   AAM            ;把两位数分开    十位存在AH  各位存在AL
   MOV CX,AX   ;因为之前有XOR AH,AH 这里的 CH其实也变向被赋值为0
   ADD CH,30H     ;把数字转换成对应字符 如0->'0'  1->'1'
   MOV DL,CH  
   MOV AH,2       ;输出个位数字
   INT 21H
   ADD CL,30H     ;其实就是BH->AL->CL就是当前公约数+30H 作用就是把数字0变成字符'0'或者把数字1变成'1'
   MOV DL,CL  ;待输出字符 十位数字
   MOV AH,2       ;输出十位数字
   INT 21H
   MOV DX,OFFSET BUFF
   MOV AH,9       ;字符串输出(显示)
   INT 21H
NEXT:INC BH
     CMP BL,BH
     JL DONE  ;终止条件 BL<BH
     JMP L1 ;继续循环
DONE:MOV AH,4CH      ;进程终止
     INT 21H

CODE ENDS
END START

郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

限时限量优惠

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2019-9-16 10:29 , Processed in 0.051941 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表