热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

实验5分支结构程序设计

实验5分支结构程序设计一、实验目的熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。二、实验题以

实验5 分支结构程序设计

一、实验目的

熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。

二、实验题



  1. 以string1为起始地址存放着含有len个字符的字符串,判断该字符串是否存在小写字母,如果有,把CL的第2位置1,否则置0。以下程序不完整,请完善程序,并调试程序回答问题,把运行过程截图附在下面。

    DATAS SEGMENT

    ;此处输入数据段代码

    STRING1 DB 'PERSONAL_cOMPUTER','$'

    LEN EQU $-STRING1

    DATAS ENDS

    CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS

    START:

    MOV AX, DATAS

    MOV DS, AX

    LEA SI, STRING1

    MOV CX, LEN

    AGAIN:

    MOV AL,[SI]

    CMP AL,‘a’

    JG L1

    NEXT:

    INC SI

    DEC CX

    JNZ AGAIN

    L1:

    CMP AL,'z'

    JG NEXT

    FOUND:

    OR CL,02H

    NOTFOUND:

    AND CL,0FDH

    EXIT:

    MOV AH,4CH

    INT 21H

    CODES ENDS

    END START

    请回答:

    完善前:


完善后:

(1) 程序完善之前,循环结束后,对CL操作之前,CX的值是否为剩余没有被扫描的字符的个数?为什么?

答:不是,循环结束后CX=0009,但是剩余没有被扫描的字符有8个。,它是找到小写字母就直接对CL进行操作了,并没有执行CX-1操作,所以CX=0009而不是0008。

(2) 程序完善后,CX的值为多少?为什么?

CX=000B,循环结束后CX=0009,然后执行FOUND分支,把CL的第2位置1,所以CX由00001001变为00001011,也就是CX=000B。

2.编写程序,x , y , z , v 均为16位带符号数,计算 ( v - ( x*y + z – 540 ) ) / x。把源程序附在下面,并把debug单步调试的截图附在下面。



( v - ( xy + z – 540 ) ) / x = (7777-(3477+99-21C))/34=01DC



  1. 编写程序,DATAX和DATAY是两个双精度数,如果DATAX大于DATAY,则把1赋值给DATAZ存储单元,否则把2赋值给DATAZ存储单元。

    执行前:


执行后:DATAZ变成2

对换DATAX和DATAY的值:

兑换后的执行结果DATAZ的值变为1:

三 实验报告

要求: 1.每步操作过程及所用指令;2.用截图方式反应指令执行前后的相关寄存器或存储单元内容的变化,并对所得结果进行分析。

本文来自博客园,作者:TCcjx,转载请注明原文链接:https://www.cnblogs.com/tccjx/p/16274926.html



推荐阅读
author-avatar
男孩花朵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有