- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编程序编写和提高课件
第四次实验汇编程序编写和提高编写一个程序,实现复制字符串的功能,并将复制的字符串正序倒序显示出来。流程图:程序如下:DATAS SEGMENT string_a db the future is beautiful;要操作的字符串 count equ $-offset string_a;把字符串的长度存入countdata1 db the zhengxu is:,$;输出正序是 data2 db the fanxu is:,$ ;输出反序是DATAS ENDSSTACKS SEGMENT string_b db 100 dup(?);建栈段存放复制的字符串STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX;把datas的段地址分别给DS,ES mov es,ax lea si,string_a;取string_a的偏移地址给si lea di,string_b;取string_b的偏移地址给di mov cx,count;把字符串长度给cx,决定循环的次数 Cld;DF置零,使DI,SI自增rep movsb;把string_a里的字符串复制到string_b,循环次数为;CX mov cx,count;把count赋给CX,决定输出正序循环次数 lea dx,data1;输出data1里的字符 mov ah,09 int 21h xor di,di;DI置零output1: mov dl,[string_b+di];把string_b偏移地址给DL mov ah,02h int 21h;输出数据段string_b里的一个字符 inc di;DI自增,指向下一个字节loop output1;循环输出 mov cx,count;CX重新获值 lea dx,data2;把data2的偏移地址赋给DX mov ah,09 int 21h ;输出提反序输出的提示字符output2: dec di;上一次循环DI指向要输出字符串的下一个字节,先自减,;使他指向最后一个字符 mov dl,[string_b+di] mov ah,02 int 21h;输出反序的字符串 loop output2 MOV AH,4CH INT 21H;结束dosCODES ENDSEND START;程序结束运行结果:过程中有几次语法错误,比如直接 MOV DI,STRING_B,提示错误,不能直接把数据段的偏移地址赋给DI,应该用LEA。百度得知:LEA为硬指令,在程序执行阶段得出偏移地址,offset是伪指令,在编译阶段得出偏移地址。论速度的话,offset比LEA快得多,但是,灵活性和复杂度,offset远不如LEA。利用中断调用,在屏幕上显示1-9中的随机数,中断号为86H流程图:Random子程序是上网百度的,加以调用刚开始运行是这样的结果发生除法溢出错误,检查后发现是AND写成了ADD改正后原子程序如下:运行结果:结果很匪夷所思......是D;检查了一下,发现....我写错了,明明子程序中都把随机数放在BL里保存,而我写的output子程序里,是把AH的值赋给DL,AH的值在POP AX已经改变......最后改正后,随机数出炉了,先看程序:DATAS SEGMENTDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov ax,0mov es,ax;段偏移地址指向0000mov bx,86h*4;把中断号86H的地址赋给BXmov ax,offset randommov es:word ptr [bx],ax;把中断子程序的偏移地址存入;ES:[BX]mov ax,seg random;取中断子程序的段基地址mov es:word ptr [bx+2],ax;把段基地址存入ES:[BX+2] int 86h;调用中断向量表的86号即RANDOM子程序 call output;调用output子程序MOV AH,4CH INT 21H;结束random procPUSH CXPUSH DXPUSH AX;寄存器保护 STI;开中断,后面要调用int 1ahMOV AH,0 INT 1AH;读取时钟滴答计数MOV AX,DX;把随机数存入
您可能关注的文档
- 求实小学校本课程—竹竿舞.doc
- 2015混合式学习多份答案.doc
- 永远永远爱你.ppt
- 2015河北省中考语文的几点思考.ppt
- 求异思维、求同思维.pptx
- 求职面试语言与技巧.ppt
- 求职信及简历.ppt
- 求解TSP量子蚁群算法.doc
- 求阴影部分的面积.ppt
- 2015清洁生产中存在的问题及持续清洁生产(第三讲).ppt
- 【物理】云南省昭通市永善县2024-2025学年八年级上学期9月月考试卷.docx
- 3.4 光的折射规律(教学设计)八年级物理上册(沪粤版2024).docx
- 河南省2023-2024学年高二上学期期末测试英语试卷(含答案).docx
- 【化学】甘肃省武威市凉州区2024-2025学年九年级上学期开学考试试卷(解析版).docx
- 【化学】江苏省泰州市2024-2025学年九年级第一次月考优选卷(解析版).docx
- 【化学】湖北省武汉市青山区部分学校2024-2025学年九年级上学期第一次月考联考试卷(解析版).docx
- 【生物】山东省聊城市高唐县2024-2025学年七年级上学期期中试题(解析版).docx
- 【化学】贵州省遵义市汇川区2024-2025学年九年级上学期9月联考试题(解析版).docx
- 【化学】江西省吉安市吉水县多校2024-2025学年九年级上学期9月月考试题(解析版).docx
- 【化学】新疆维吾尔自治区乌鲁木齐市新市区2024-2025学年九年级上学期第一次月考试题(解析版).docx
文档评论(0)