当前位置: 首页 > news >正文

网站模版上传空间后怎么做今天国际新闻

网站模版上传空间后怎么做,今天国际新闻,成都定制软件开发公司,淘宝客网站需要多大空间title: 汇编求和实验 keywords: 汇编 tags: [汇编] categories: 嵌入式 汇编求和实验 刚开始学习汇编 给大家做个参考 实验 5 子程序 5.1 实验目的 ①掌握利用堆栈传递参数的子程序调用方法。 ②过程调用伪指令:PROC,ENDP,NEAR和FAR。 ③8088…

title: 汇编求和实验
keywords: 汇编
tags: [汇编]
categories: 嵌入式


汇编求和实验

刚开始学习汇编 给大家做个参考

实验 5 子程序 5.1 实验目的 ①掌握利用堆栈传递参数的子程序调用方法。 ②过程调用伪指令:PROC,ENDP,NEAR和FAR。 ③8088指令:CALL,RET,RETn。 5.2 实验类型 验证型实验\2. 操作步骤 ①输入,编译并运行程序。 ②用emu8086运行此程序,观察并记录每次过程调用及进出栈指令前后的SP和堆栈内容。 ③记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。 ④修改并自编程序,使得在屏幕上可以输入任意6个十进制数字,同时在屏幕上输出SUM1 的结果(要求输出十进制数字,打印出有效2位数即可)。

  1. AX:这是一个通用寄存器,通常用于算术和逻辑操作。在这段程序中,它被用来存储 DATAS 段的地址,然后这个地址被移动到 DS 寄存器。

  2. DS:这是一个段寄存器,用于存储数据段的地址。在这段程序中,它被设置为 DATAS 段的地址,这样程序就可以访问在 DATAS 段中定义的数据了。

  3. SI:这是一个索引寄存器,通常用于存储数组或字符串的索引。在这段程序中,它被用来存储 DATA 数组的当前索引。

  4. CX:这是一个计数寄存器,通常用于存储循环的次数。在这段程序中,它被设置为6,表示输入循环的次数。

  5. DX:这是一个通用寄存器,通常用于I/O操作。在这段程序中,它被用来存储字符串的地址,然后这个地址被用于 INT 21H 中断,以打印字符串。

  6. AH:这是 AX 寄存器的高8位,通常用于存储操作码。在这段程序中,它被设置为9,表示打印字符串的操作。

  7. DI:这是一个索引寄存器,通常用于存储数组或字符串的索引。在这段程序中,它被初始化为0,用于打印总和。

    修改并自编程序,使得在屏幕上可以输入任意6个十进制数字,同时在屏幕上输出SUM1 的结果(要求输出十进制数字,打印出有效2位数即可)。

DATAS SEGMENTstring_1 DB 'input','$' ; 提示输入string_2 DB 'input again','$' ; 无效输入的错误消息string_3 DB ' ','$' ; 空格字符DATA  DW 10 DUP(?) ; 存储输入数字的数组message  DB 0ah,'sum:',0DH,'$' ; 总和输出的消息
DATAS ENDSSTACKS SEGMENTDW 256 dup(?) 
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置DS寄存器指向DATAS段MOV SI, 0  ; 指针初始化MOV CX, 6 ; 循环次数MOV DX, OFFSET string_1 ; 提示输入MOV AH, 9INT 21HLp:CALL Input ; 调用输入子程序ADD SI, 2 ; 指针增加2(每个输入数字占2个字节)Loop Lp ; 循环直到所有数字输入完毕MOV DX, OFFSET message ; 打印总和消息MOV AH, 9INT 21HCALL Get_sum ; 调用Get_sum子程序计算总和MOV DX, AXADD DX, 30HMOV AH, 2INT 21HMOV AH, 4CH INT 21HInput PROC Nearpush AX push BXpush CX push DX MOV BX, 0 CLC ; 清除进位标志MOV DX, 0 Lp_0:MOV AH, 1INT 21H ; 从输入中读取一个字符CMP AL, 20H ; 检查输入是否为空格字符JE L_CRLF ; 如果是空格,跳转到L_CRLFSUB AL, 30H ; 将ASCII转换为整数MOV AH, 0 ; 清除AH寄存器XCHG AX, BX ; 交换AX和BX寄存器JMP Lp_0 ; 继续输入循环L_CRLF: ; 输入结束标记(换行)MOV DX, 0MOV DATA[SI], BX ; 将输入数字存储在DATA数组中POP DXPOP CXPOP BXPOP AXRET
Input ENDPGet_sum PROC NEARPUSH BXPUSH CXMOV BX, 0MOV CX , 6MOV DI, 0LOP1:MOV AX, DATA[DI]ADD BX, AXADD DI , 2LOOP LOP1MOV AX, BXPOP BXPOP CXRET
Get_sum ENDPCODES ENDS
END START

Input过程是一个子程序,用于读取用户的输入。它首先将AX、BX、CX和DX寄存器的值压入堆栈以保存它们的当前状态。然后,它使用DOS中断21H的功能1来读取用户的输入。如果输入是空格(ASCII值为20H),则结束输入;否则,将输入的ASCII值转换为数字,并存储在BX寄存器中。最后,将BX寄存器的值存储在DATA数组中,并恢复AX、BX、CX和DX寄存器的值。

Get_sum过程是另一个子程序,用于计算DATA数组中的所有数字的和。它首先将BX和CX寄存器的值压入堆栈以保存它们的当前状态。然后,它初始化BX寄存器为0,用于存储和;初始化CX寄存器为6,表示要加的数字的数量;初始化DI寄存器为0,表示数组的索引。然后,它在循环中将DATA数组中的每个数字加到BX寄存器中。最后,将和存储在AX寄存器中,并恢复BX和CX寄存器的值。

但这个有致命缺点

笑死了 直接加0x30得到十进制数字就是 只有0-9可以正常输出结果

首先,它将12赋值给AX寄存器,然后将10赋值给CL寄存器。然后,它使用div cl指令将AX寄存器的值除以CL寄存器的值。在这个操作后,商(也就是十位数)存储在AL寄存器中,余数(也就是个位数)存储在AH寄存器中。然后,它将AH寄存器的值复制到BH寄存器中。

然后,它检查AL寄存器的值是否为0。如果AL寄存器的值为0,那么它将跳转到tito标签,否则,它将继续执行。

接下来,它将AL寄存器的值复制到DL寄存器中,然后将DL寄存器的值增加30H(因为在ASCII编码中,数字字符的编码是从30H开始的)。然后,它将AH寄存器的值设置为2,然后调用DOS中断21H的功能2,将DL寄存器中的字符输出。

tito标签处,它将BH寄存器的值复制到DH寄存器中,然后将DH寄存器的值增加30H。然后,它将AH寄存器的值设置为2,然后调用DOS中断21H的功能2,将DH寄存器中的字符输出。

DATAS SEGMENTstring_1 DB 'input','$' ; 提示输入string_2 DB 'input again','$' ; 无效输入的错误消息string_3 DB ' ','$' ; 空格字符DATA  DW 6 DUP(?) ; 存储输入数字的数组message  DB 'sum:',0ah,'$' ; 总和输出的消息
DATAS ENDSSTACKS SEGMENTDW 256 dup(?) 
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置DS寄存器指向DATAS段MOV SI, 0  ; 指针初始化MOV CX, 6 ; 循环次数MOV DX, OFFSET string_1 ; 提示输入MOV AH, 9INT 21HLp:CALL Input ; 调用输入子程序ADD SI, 2 ; 指针增加2(每个输入数字占2个字节)Loop Lp ; 循环直到所有数字输入完毕MOV DX, OFFSET message ; 打印总和消息MOV AH, 9INT 21HCALL Get_sum ; 调用Get_sum子程序计算总和存到axmov cl, 10div cl     mov bh,ah cmp al, 0je tito          ;十位为零 跳转titoMOV Dl, al  ADD dl, 30HMOV AH, 2INT 21H        tito:MOV Dl, bh  ADD dl, 30HMOV AH, 2INT 21H Input PROC Nearpush AX push BXpush CX push DX MOV BX, 0 CLC ; 清除进位标志MOV DX, 0 Lp_0:MOV AH, 1INT 21H ; 从输入中读取一个字符CMP AL, 20H ; 检查输入是否为空格字符JE L_CRLF ; 如果是空格,跳转到L_CRLFSUB AL, 30H ; 将ASCII转换为整数MOV AH, 0 ; 清除AH寄存器XCHG AX, BX ; 交换AX和BX寄存器JMP Lp_0 ; 继续输入循环L_CRLF: ; 输入结束标记(换行)MOV DX, 0MOV DATA[SI], BX ; 将输入数字存储在DATA数组中POP DXPOP CXPOP BXPOP AXRET
Input ENDPGet_sum PROC NEARPUSH BXPUSH CXMOV BX, 0MOV CX , 6MOV DI, 0LOP1:MOV AX, DATA[DI]ADD BX, AXADD DI , 2LOOP LOP1MOV AX, BXPOP BXPOP CXRET
Get_sum ENDPCODES ENDS
END START

如此我们便完成这节课的任务了

http://www.dinnco.com/news/24980.html

相关文章:

  • 做微信营销网站建设百度百度一下你就知道
  • 某企业网站网页设计模板百度网盘app免费下载安装老版本
  • 社交和门户网站的区别营销推广方案设计
  • 新手如何建立网站百度游戏客服在线咨询
  • 做猎头顾问 经常看哪些网站互联网公司
  • 网站建设报价套餐seo手机关键词网址
  • 信用中国网站由哪个部委支持下建设友情链接管理系统
  • 各大网站怎么把世界杯做头条教育培训加盟
  • 网站建设项目经验seo人才招聘
  • 教做美食的视频网站西安百度推广代理商
  • wordpress网站底部版权代码网站怎么做推广
  • 网站做百度竞价的标志怎么申请网址
  • 定制工作服seo优化啥意思
  • 做搜狗pc网站快速关键词在线播放免费
  • 做外销b2b网站对比无锡网站关键词推广
  • 苏州网站地址2023年适合小学生的新闻有哪些
  • 数据来源于网站怎么做参考文献营销的目的有哪些
  • 北京网站制作培训学校办公软件培训
  • 制做商品网站常州百度推广公司
  • 可以给别人做ps设计的网站莫停之科技windows优化大师
  • 网站制作怎么报价2024年8月爆发新的大流行病毒吗
  • 乌兰察布做网站公司谷歌广告联盟官网
  • 芜湖网站建设哪家好2345网址导航官网官方电脑版下载
  • mac字体怎么安装wordpress官网seo优化找哪家做
  • 企业应用平台和系统管理下载seo快排软件
  • 建微网站有什么好处刷网站关键词工具
  • 登录企业网站管理系统网络推广员工作好做吗
  • 家装网站建设市场调研的四个步骤
  • design设计网站外链平台
  • 洛阳外贸网站建设今天国内新闻10条