关于存储器寻址问题1

今天是2018年4月3号,早晨起来怼了一波代码:

data segment

    str1 db 10,?,11 dup(?)

data ends

code segment

    assume cs:code,ds:data

start:mov ax,data

        mov ds,ax


        mov ax,seg str1

        mov ds,ax

        lea dx,str1

        mov ah,0ah

        int 21h

        

        mov bl,str1+1;(刚开始写成了mov bl,str+1  少了一个1,结果报错 大致意思是“str是CPU里的关键字”)

        mov bh,0

        mov al,'$'

        mov [bx+2],al;(刚开始直接写成了mov [bx+2],'$',或者把这句和上句删掉改为 mov byte ptr[bx+2],'$')

(这里还有一个重点:[bx+2]是存储单元,系统在编译时把它的类型与后面的  寄存器类型  相匹配,例如:mov [bx+2],ax则[bx+2]为字单元。)

        mov dl,0dh

        mov ah,2

        int 21h


        mov dl,0ah

        mov ah,2

        int 21h


        lea dx,str1+2

        mov ah,9

        int 21h

        

        mov ah,4ch

        int 21h

code ends

end start

上面的两处错误源于粗心大意以及对存储器寻址概念的模糊。

关于存储器寻址方式

1,存储器直接寻址   mov ax,ds:[偏移地址]

2,间接                   mov ax,ds:[间址寄存器(bx,si,di)]

                               mov ax,ss:[bp]

3,相对                   mov ax,ds:[(bx,si,di)+偏移量]

                               mov ax,ss:[bp+偏移量]

4,基址变址            mov ax,ds:[bx+(si,di)]

                              mov ax,ss:[bp+(si,di)]

5,相对基址变址      mov ax,ds:[bx+(si,di)+偏移量]

                               mov ax,ss:[bp+(si,di)+偏移量]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值