王爽汇编第九章学习笔记

  1. 在这里0-1=ffff

  2. 有关于根据位移进行转移的意义:跳转指令与浮动装配(汇编相关),汇编语言交流,技术交流区,鱼C论坛 - Powered by Discuz!

  3. 实验八:重点关注jmp short s1是表达ip的值本位-8个字节,因为他不是长转移,而是短转移,是直接根据位移算的,它的机器码里没有要跳转到的目标位置的信息

  4. 有关于nasm用法的意外收获:http://www.cppblog.com/myjfm/archive/2011/11/05/159647.asp

  5. 有关于实验9,先给代码

     DATAS SEGMENT
         db 'welcome to masm!'  
         db 2h,23h,71h
     DATAS ENDS
     stack segment
         dw 10 dup(0)
     stack ends
     ​
     CODES SEGMENT
         ASSUME CS:CODES,DS:DATAS,SS:stack
     START:
         mov ax,datas
         mov ds,ax
         mov ax,0b800h
         mov es,ax
         mov si,40h
         mov di,0
         mov bp,0780h
         mov cx,3
         s1:
         push cx
         mov cx,10h
         s:mov al,byte ptr ds:[bx]
         mov ah,byte ptr ds:[di+10h]
         mov es:[si+bp],ax
         add si,2
         inc bx
         loop s
         mov bx,0
         inc di
         add bp,0a0h
         mov si,40h
         pop cx
         loop s1
         MOV AH,4CH
         INT 21H
     CODES ENDS
         END START

    写这道实验我还是踩过挺多坑的,现在就列一下:

    1. 栈不用你进行初始化,在上面设栈了,程序会自动帮你接过去,不然你的程序可能报错

    2. 直接数类似于abh这样的,只有这么写0abh才是合法,其他会报错

    3. 你不能直接用si进行字节的复制,我试了下,直接报错

    4. 一般这种处理一个字节,可以分解ax为al,ah,然后复制到目标的内存单元,注意高位配高位,低位配低位

    5. 字符串可以通过db ‘jaskdjak’这样在data数据段中直接设置

    6. 因为我在data段里面设置两个,又因为这两个偏移方式有点不太一样,所以不能用相同的寄存器进行同加操作,这里是我原本第24行di是bi

你可能感兴趣的:(汇编学习,汇编)