请问这个程序的功能

昵称是可以中文吗 2010-01-15 12:07:35
CODE SEGMENT
ORG 100H
ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE
MAIN PROC NEAR
MOV BX,-9765H
CALL DSUB
MOV AH,4CH
INT 21H
MAIN ENDP

DSUB PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
OR BX,BX
JNS NEXT1
MOV DL,2DH
MOV AH,2
INT 21H
NEG BX
NEXT1:MOV AX,BX
XOR CX,CX
NEXT2: XOR DX,DX
MOV BX,10
DIV BX
PUSH DX
INC CX
CMP AX,0
JNZ NEXT2
NEXT3:POP DX
ADD DL,30H
MOV AH,2
INT 21H
LOOP NEXT3
POP DX
POP CX
POP BX
POP AX
RET
DSUB ENDP
CODE ENDS
END MAIN
...全文
114 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yekeyishuo 2010-01-16
  • 打赏
  • 举报
回复
替你顶一下
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dididu1515 的回复:]
;这个程序的功能是把BX中的数转换为十进制ASCII,并显示出来.
CODE SEGMENT
ORG 100H ;代码段指针(IP)指向CS:100H,标准COM格式
ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE ;所有段段基值都与代码段相等
MAIN PROC NEAR
MOV BX,-9765 ;这里的-9765H估计是笔误 高手,这里是9765CALL DSUB
mov ah,1
int 21h
MOV AH,4CH ;调用DOS的21H中断4CH子功能,退出程序,返回DOS.
INT 21H
MAIN ENDP

DSUB PROC NEAR
  PUSH AX
  PUSH BX
  PUSH CX
  PUSH DX
; 以上4句保护被调用寄存器
  OR BX,BX ;或测试
  JNS NEXT1 ;是正数转NEXT1
  MOV DL,2DH ;显示负号“-”
  MOV AH,2
  INT 21H
  NEG BX ;BX求补
  NEXT1:MOV AX,BX
  XOR CX,CX ;循环控制器置0
  NEXT2: XOR DX,DX ;被除数高位DX清0
    MOV BX,10
    DIV BX ;DX:AX除十取余
    PUSH DX ;余数入栈
    INC CX ;计数器+1
    CMP AX,0 ;是否已除尽?
    JNZ NEXT2 ;没除尽继续除
  NEXT3:POP DX ;弹栈一位余数
  ADD DL,30H ;转为ASCII码
  MOV AH,2 ;显示
  INT 21H
  LOOP NEXT3
;  以下4句恢复被调用寄存器
  POP DX
  POP CX
  POP BX
  POP AX
  RET
  DSUB ENDP
  CODE ENDS
  END MAIN
[/Quote]
明白了,谢谢楼上提醒,
dididu1515 2010-01-15
  • 打赏
  • 举报
回复
;这个程序的功能是把BX中的数转换为十进制ASCII,并显示出来.
CODE SEGMENT
ORG 100H ;代码段指针(IP)指向CS:100H,标准COM格式
ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE ;所有段段基值都与代码段相等
MAIN PROC NEAR
MOV BX,-9765 ;这里的-9765H估计是笔误
CALL DSUB
mov ah,1
int 21h
MOV AH,4CH ;调用DOS的21H中断4CH子功能,退出程序,返回DOS.
INT 21H
MAIN ENDP

DSUB PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; 以上4句保护被调用寄存器
OR BX,BX ;或测试
JNS NEXT1 ;是正数转NEXT1
MOV DL,2DH ;显示负号“-”
MOV AH,2
INT 21H
NEG BX ;BX求补
NEXT1:MOV AX,BX
XOR CX,CX ;循环控制器置0
NEXT2: XOR DX,DX ;被除数高位DX清0
MOV BX,10
DIV BX ;DX:AX除十取余
PUSH DX ;余数入栈
INC CX ;计数器+1
CMP AX,0 ;是否已除尽?
JNZ NEXT2 ;没除尽继续除
NEXT3:POP DX ;弹栈一位余数
ADD DL,30H ;转为ASCII码
MOV AH,2 ;显示
INT 21H
LOOP NEXT3
; 以下4句恢复被调用寄存器
POP DX
POP CX
POP BX
POP AX
RET
DSUB ENDP
CODE ENDS
END MAIN
  • 打赏
  • 举报
回复
应该是倒序输出吧
nanlingcg 2010-01-15
  • 打赏
  • 举报
回复
但似乎程序有点问题!
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cnzdgs 的回复:]
就是把bx中的数值以十进制形式输出。
[/Quote]
应该是BX/10后以十进制形式的倒序输出吧
nanlingcg 2010-01-15
  • 打赏
  • 举报
回复
带符号十进制输出BX中的值!
cnzdgs 2010-01-15
  • 打赏
  • 举报
回复
就是把bx中的数值以十进制形式输出。
  • 打赏
  • 举报
回复
程序输出26779
yekeyishuo 2010-01-15
  • 打赏
  • 举报
回复
程序中输入《30的数如#¥@等,结果都是0000,而不是跳到L1重新输入,晕,看一看
yekeyishuo 2010-01-15
  • 打赏
  • 举报
回复
应该是10进制输入16进制输出,但是输入1和-1结果都是0001????
cnzdgs 2010-01-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 scauscnu 的回复:]
引用 2 楼 cnzdgs 的回复:
就是把bx中的数值以十进制形式输出。

应该是BX/10后以十进制形式的倒序输出吧
[/Quote]
程序是循环除以10,每次得到余数,得到的顺序是:个位、十位、百位……,所以要倒过来输出。
  • 打赏
  • 举报
回复
AND AX,0FH
XCHG AX,BX
MOV CX,10
MUL CX
JC L5
这里交换后0*10不是肯定等于0吗
  • 打赏
  • 举报
回复
还有最后这一道题的功能,先谢谢大家了
P SEGMENT
ORG 100H
ASSUME CS:P,ES:P,SS:P
MAIN PROC NEAR
XOR BX,BX
L1: MOV AH,1
INT 21H
CMP AL,0DH
JE L2
CMP AL,30H
JB L1
CMP AL,39H
JA L1
AND AX,0FH
XCHG AX,BX
MOV CX,10
MUL CX
JC L5
ADD BX,AX
JC L5
JMP L1
L2: MOV AH,2
MOV DL,0DH
INT 21H
MOV AH,2
MOV DL,0AH
INT 21H
MOV CX,4
L3:
PUSH CX
MOV CL,4
ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,39H
JBE L4
ADD DL,7
L4: MOV AH,2
INT 21H
POP CX
LOOP L3
JMP L6
L5:MOV AH,9
LEA DX,ERROR
INT 21H
L6:MOV AH,4CH
INT 21H
ERROR DB 0DH,0AH,"0VERFLOW",07,0DH,0AH,24H
MAIN ENDP
P ENDS
END MAIN
老规矩,先看本节效果图我们实现这个支付功能完全是借助小程序云开发实现的,不用搭建自己的服务器,不用买域名,不用备案域名,不用支持https。只需要一个简单的云函数,就可以轻松的实现微信小程序支付功能。核心代码就下面这些一,创建一个云开发小程序关于如何创建云开发小程序,这里我就不再做具体讲解。不知道怎么创建云开发小程序的同学,可以去翻看我之前的文章,或者看下我录制的视频:https://edu.csdn.net/course/play/9604/204528创建云开发小程序有几点注意的1,一定不要忘记在app.js里初始化云开发环境。2,创建完云函数后,一定要记得上传二, 创建支付的云函数1,创建云函数pay三,引入三方依赖tenpay我们这里引入三方依赖的目的,是创建我们支付时需要的一些参数。我们安装依赖是使用里npm 而npm必须安装node,关于如何安装node,我这里不做讲解,百度一下,网上一大堆。1,首先右键pay,然后选择在终端中打开2,我们使用npm来安装这个依赖。在命令行里执行 npm i tenpay安装完成后,我们的pay云函数会多出一个package.json 文件到这里我们的tenpay依赖就安装好了。四,编写云函数pay完整代码如下//云开发实现支付 const cloud = require('wx-server-sdk')cloud.init() //1,引入支付的三方依赖 const tenpay = require('tenpay'); //2,配置支付信息 const config = ;exports.main = async(event, context) => 一定要注意把appid,mchid,partnerKey换成你自己的。到这里我们获取小程序支付所需参数的云函数代码就编写完成了。不要忘记上传这个云函数。出现下图就代表上传成功五,写一个简单的页面,用来提交订单,调用pay云函数。这个页面很简单,1,自己随便编写一个订单号(这个订单号要大于6位)2,自己随便填写一个订单价(单位是分)3,点击按钮,调用pay云函数。获取支付所需参数。下图是官方支付api所需要的一些必须参数。下图是我们调用pay云函数获取的参数,和上图所需要的是不是一样。六,调用wx.requestPayment实现支付下图是官方的示例代码这里不在做具体讲解了,完整的可以看视频。实现效果1,调起支付键盘2,支付完成3,log日志,可以看出不同支付状态的回调上图是支付成功的回调,我们可以在支付成功回调时,改变订单支付状态。下图是支付失败的回调,下图是支付完成的状态。到这里我们就轻松的实现了微信小程序的支付功能了。是不是很简单啊,完整的讲解可以看视频。
【为什么学习微信小程序?】   小程序开发为当下一种主流的开发形式,小程序开发已经不仅仅局限于互联网行业,传统行业同样也有海量的需求,掌握小程序开发不仅仅是掌握了一个新的开发技能,更可以增加大家的行业竞争力,无论是在岗位的提升,求职面试、或者个人创业都是有很大的帮助。掌握了小程序开发小程序也是一门相对比较容易上手的技术,因为小程序开发容纳了前端、后端、运维等岗位所需掌握的知识但又极为简单好理解,对于刚刚入门或者小白用户是一个可以快速掌握并成为一名程序猿的不二途径。 【推荐你学习这门课程的四大亮点】 1、完整成体系的小程序开发知识: 对于没有学习过小程序开发的同学,本课程由浅入深系统的向同学们讲解了小程序开发知识,将知识点串联起来,让同学们可以更好更快的掌握小程序开发。2、视频及相关功能开发的掌握: 借助于小程序开发使得视频方向的开发变的尤为简单,即使你是入门小白也可以熟练掌握小程序中视频的相关开发,其中涉及了视频的常规控制如播放暂停等也有比较流行的视频弹幕功能,并结合了一下视频开发中相关的性能优化问题,可以让同学们通过本课程的学习对于视频类的开发有更深层次的认识。3、打造智能闲聊小程序: 借助于网络上开放的人工智能接口,去实现智能闲聊功能,使得开发的过程不仅能够收获更多的知识也变得更加有趣。项目中虽然知识讲解了智能闲聊功能的调用,但是通过此功能的调用方法大家可以举一反三去使用更多的开发功能使得开发变得简单且有趣。4、掌握项目级开发知识及技巧: 本课程中融入了两大当前比较主流的项目实例,视频功能和人工智能。通过项目的练习不仅可以让大家掌握较为主流的项目方向且融入很多的中高级语法及项目开发知识,如ES6+的一些语法和模块化、组件化开发的知识。【课程内容设计】   设计本门课程时考虑到很多同学可能没有小程序开发相关经验,本门课程将由浅入深,渐进式的讲解知识点。我把课程分为了三个阶段分别为:初次接触、基础入门、实战提升。   1、初次接触:   主要给大家讲解小程序开发的相关知识,让大家在宏观上对向程序开发能有一定的概念。并且讲授的开发环境的搭建让大家对在开发前期做一个充分的热身。先激发起大家对线程序开发的热情,这样为下一步小程序的开发学习做一个铺垫。   2、基础入门:   这个阶段主要为入门的同学提供了一个比较全面的小程序开发基础知识知识汇总,并伴有实践的例子简单且易上手,让大家能够体验到小程序的开发乐趣,并未下一步的项目实战开发打定基础。   3、实战提升:   这个阶段为项目实践阶段,通过实战项目让大家深入了解和学习小程序开发,项目中同时融入了现在主流的视频内容,和有趣并贴近生活的智能闲聊功能,项目中涉及到的技术点也是由浅入深,同学们在掌握小程序的开发能力的同时也掌握了问题解决与深入学习的能力。 【实战项目展示】 【学习完课程你将收获】

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧