16位汇编复习

作者: loveforkeeps | 来源:发表于2015-11-12 13:27 被阅读64次
    王爽第三版根据课后练习题顺序,结合课本阅读效果更佳,简单的问题不再指出
    本人才疏学浅,不能保证全部所写正确性,有错请指出。

    1.1
    CPU的寻址能力是由地址总线决定的,一个地址总线宽度对应一个内存单元。8086有20根地址总线,
    CPU数据总线一根传一个bit,8086为16根数据总线,一次传输两个字节。数据总线与寄存器,处理位数相同,对应我们之后学到的最大处理数据指定:word ptr。
    在存储器中数据和程序以二进制码存放,我们用-d查看内存时,用16进制数显示,每个字节空一格。
    2.2
    段地址与偏移地址
    物理地址=段地址x16+偏移地址
    8086有20根地址总线,这就是它为什么用两个16位的段地址和偏移地址来合成一个20位的物理地址的原因。
    2.3
    任意时刻CS:IP指向CPU将要执行的下一步操作,课后练习中有三条指令,因为第三条jmp修改了IP,所以共执行了四次。
    jmp指令(注意jmp是一个汇编指令,不能在debug中使用,与考试无关。)
    **jmp 段地址:偏移地址 ** 同时修改CS:IP
    **jmp 寄存器名 ** 只修改IP 等同于 MOV IP,寄存器名
    第二章实验
    e命令用来写入机器码 a写汇编指令,写完后用r指令把CS与IP修改到写入指令处,用t命令执行即可。

    -r 查看和改变CPU寄存器的内容:
    -r ax 后按下enter键将出现:提示输入,输入内容即可改变ax寄存器的内容。
    -d 查看内存中的内容:
    -d 1000:0 意思就是查看内容地址为10000h-10070h内存中的内容。
    -d 1000:0 9查看1000:0-1000:9单元中的内容
    -d 1000:10 10查看1000:10内存中的内容
    -e 改写内存中的命令:
    -e 1000:0 1 'a' 2 'b' 3 'c'
    向1000:0 1000:2 1000:4单元中写入1,2,3, 向1000:1 1000:3 1000:5单元中写入"a" "b" "c"。
    -u 将内存中的机器指令翻译成汇编指令:
    -u 1000:0
    -t 执行一条机器指令:
    执行cs:ip所指向的指令
    -a 以汇编指令的格式在内存中写入一条机器指令

    3.1
    多注意内存中的高位与低位位置。

    栈的push与pop

    SS:SP

    3.7
    栈的段地址ss,是一个段寄存器(所有段寄存器都不能直接赋值),我们需要一个寄存器来中转。

    寄存器reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;
    段寄存器sreg:ds,ss,cs,es;

    ……

    相关文章

      网友评论

        本文标题:16位汇编复习

        本文链接:https://www.haomeiwen.com/subject/uecyqttx.html