- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第3章 汇编语言程序设计
第3章 汇编语言程序设计 ;-- 数据段定义 DAT SEGMENT STR1 DB ‘ABCDEFG’ ; 定义字符串(最长不超过32个字符) CNT EQU $ - STR1 ; 统计字符串中字符个数 NUM DB ? ; 存放统计结果( ‘1’的总个数256 ) DAT ENDS ; 代码段定义 COD SEGMENT ASSUME DS: DAT, CS: COD MAIN PROC FAR PUSH DS ; 保存返回地址 SUB AX, AX PUSH AX MOV AX, DAT MOV DS, AX ; 初始化DS ;外循环开始 MOV AL, 0 ; 外循环初始化 MOV NUM, AL MOV SI, OFFSET STR1 MOV CL, CNT 第3章 汇编语言程序设计 ;内循环开始 LOP1: LODSB ; 内循环初始化,取字符同时更新指针 LOP2: CMP AL, 0 ; 内循环控制 JE LOP3 ; (AL)=0,不满足循环条件,退出内循环 SHL AL, 1 ; 内循环体(同时修改循环控制条件) JNC LOP2 ; 当前位不为“1”,进入下一次内循环 INC NUM ; 当前位为“1”,计数值加1 JMP LOP2 ; 进入下一次内循环 ;内循环结束 LOP3: DEC CL ; 外循环控制 JNZ LOP1 ; (CL)≠0,满足循环条件,进入下一次外循环 ;外循环结束 EXT: RET MAIN ENDP COD ENDS END MAIN 第3章 汇编语言程序设计 D:\MASMDEBUG TEST0a.exe ;装入执行文件 -U ;反汇编程序 129E:0000 B89D12 MOV AX , 129D 129E:0003 8ED8 MOV DS , AX 129E:0005 8D160000 LEA DX , [0000] 129E:0009 B40A MOV AH , 0A 129E:000B CD21 INT 21 129E:000D B500 MOV CH , 00 129E:000F 8A0E0100 MOV CL , [0001] 129E:0013 B44C MOV AH , 4C 129E:0015 CD21 INT 21 …… -D 129D:0 L10 ;查看程序执行前缓冲区内容 129D:0000 0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 -G 0000 ;执行程序 Hello ;从键盘输入字符串 Program terminated normally -D 129D:0 L10 ;查看程序执行后缓冲区内容 129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00 00 00 00 00 00 ..Hello - (5) 显示字符串 ( 09H功能) 第3章 汇编语言程序设计 入口参数 ①定义要显示的字符串, 字符串尾应为’$’,作为结束显示的标志。 ②DS : DX = 字符串的首地址 功能号 AH = 09H 类型号 21H 出口参数 无 实现功能 显示字符串,遇 ’$’ 停止显示,光标随动。 例: 编程显示字符串’ Tsinghua University’ data SEGMENT
文档评论(0)