• 实验一


    1、使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。

    机器码                                                   汇编指令

    b8 20 4e                                               mov ax,4E20H

    05 16 14                                               add  ax,1416H

    bb 00 20                                               mov bx,2000H

    01 d8                                                    add ax,bx

    89 c3                                                    mov ax,bx

    01 d8                                                    add ax,bx 

    b8 1a 00                                               mov ax,001AH

    bb 26 00                                               mov bx,0026H

    00 d8                                                    add al,bl

    00 dc                                                    add ah,bl

    00 c7                                                    add bh,al

    b4 00                                                    mov ah,0

    00 d8                                                    add al,bl

    04 9c                                                    add al,9CH

    提示,可用E命令和A命令以两种方式将指令写入内存。注意用T命令执行时,CS:IP的指向。

    a 命令向从1000:0开始的内存单元中写入汇编指令,然后使用t命令来执行写入的指令,如下图:

    要注意CS 和IP的值。CS和IP处的指令为CPU当前要读取,执行的指令;

    还有就是用t命令执行时,一定要让CS和IP的值指向2000:0 。

     

    2、将下面三条指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方。

    mov ax,1

    add ax,ax

    jmp 2000:0003

    jmp的用法我感觉有点生疏,看了下书,Jmp 段地址:偏移地址  同时修改CS IP的内容。

    这里把段地址修改成2000,偏移地址修改为0003,再看一下2000:0003对应的内存单元中的指令为add ax,ax,这样感觉就像C语言里的循环。

    3、查看内存中的内容。

    PC机主板上的ROM中写有一个生产日期,在内存FFF00H~FFFFFH的某几个单元中,请找到这个生产日期并试图改变它。

    生产日期为92年一月一日。主板中的内容是不能改变的。

    因为用的是Dosbox,读取的是虚拟主板的信息。不是真正的生产日期。

    4、向内存从B8100H开始的单元中填写数据,如:

    -e B810:0000 01 01 02 02 03 03 03 04 04

    请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。

     

    总结:

    平时课后没有很好地巩固练习,所以一些基本的指令含义还不太明白,要是有什么错的地方,希望各位可以帮忙指出来,

    以后我一定加紧练习,熟能生巧。

     

  • 相关阅读:
    nginx反向代理下载文件失败处理
    jenkins集成sonarqube代码审核
    Django中@login_required用法简介
    使用uwsgi配置django
    python的subprocess模块
    python的hashlib模块
    python的StringIO模块
    关于C#引用ExceptionPolicy.HandleException(ex, "LogAndReplace", out exceptionToReplace);
    C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法
    MVC页面重定向'页面跳转
  • 原文地址:https://www.cnblogs.com/xinqimisa/p/9863171.html
Copyright © 2020-2023  润新知