8086汇编-26[BX]和Loop指令04

#pragma once
/*    26-[BX]和Loop指令04

  温故而知新
    【bx】的作用:作为偏移地址与DS配合

     loop和cx合作

     debug的-g 偏移地址 命令 和 -p命令


  Debug和汇编编译器Masm对指令的不同处理
    本节只试点为下面刻成的顺利进行提供一点预备知识。

    我们在Debug中写过类似的指令:
                mov ax,[0] 

        表示将ds:0处的数据送入al中。

    但是在汇编源程序中,指令“mov ax,[0]”被编译器当作指令“mov ax,0”处理。
    示例
        示例任务:将内存2000:0、2000:1 、2000:2、2000:3单元中的数据送入al,bl,cl,dl中。
        (1)在Debug中编程实现
        (2)汇编程序实现

            在Debug中编程实现
            两种实现的实际实施情况
                    mov ax,2000h
                    mov ds,ax
                    mov al,[0]
                    mov bl,[1]
                    mov cl,[2]
                    mov dl,[3]


            对比汇编程序实现
                    assume cs:code 
                    code segment
                        mov ax,2000h
                        mov ds,ax
                        mov al,[0]
                        mov bl,[1]
                        mov cl,[2]
                        mov dl,[3]
    
                        mov ax,4c00h
                        int 21h
                    code ends
                    end

    如果一定要像DEBUG那样
        在MASM中mov ax, [2]是解释为mov ax,2的。一般我们是通过BX来代替,像这道题我们先mov bx, 2 再通过mov ax, [bx]来实现。

        但是我们要像DEBUG一样直接用[2]可以吗?答案是……

        可以的,不过要加上段地址!!试试!

    对比以下指令分辨:
        mov al, [0]
        mov al, ds:[0]
        mov al, [bx]
        mov al, ds:[bx]
        该形式就是我们在OD 中看到的!我们以后在编译器中也应该如此进行编译!!!!

        另外Debug 中 P不但可以结束 程序,也可以结束循环 。

    在masn 编译器中 下面的汇编指令 其真正会被编译成?其真正的意思是?
        mov al, [0]                mov al,0                al = 0
        mov al, ds:[0]            mov al,ds:[0]            al = (ds:[0])    
        mov al, [bx]            mov al, [bx]            al = (ds:[bx])
        mov al, ds:[bx]         mov al, ds:[bx]            al = (ds:[bx])        
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值