回头再来 发表于 2012-10-31 15:48:17

大家帮忙找错误

assume cs:code
code segment
        mov ax,2000h
        mov ds,ax
        mov ax,2
        mov dx,0
        mov ,al
        mov cx,123
   s:            add ,al
        loop s

        mov ax,4c00h
        int 21h
code ends
end


补充内容 (2012-10-31 15:49):
编译不过去

回头再来 发表于 2012-10-31 16:00:56

mov ,al
add ,al
这两句引起的 汇编源代码中不让这么写吗

回头再来 发表于 2012-10-31 16:04:36

assume cs:code
code segment
         mov ax,2000h
         mov ds,ax
         mov ax,2
         mov dx,0
         mov ds:,al
         mov cx,123
    s:   add ds:,al
         loop s

      mov ax,4c00h
         int 21h
code ends
end
这样也不行

回头再来 发表于 2012-10-31 16:05:29

assume cs:code
code segment
         mov ax,2000h
         mov ds,ax
         mov ax,2
         mov dx,0
         mov ds:,al
         mov cx,123
    s:   add ds:,al
         loop s

      mov ax,4c00h
         int 21h
code ends
end
只有这样可行

回头再来 发表于 2012-10-31 16:16:47

mov bl,
这样可行

回头再来 发表于 2012-10-31 16:17:58

mov bl,ds:
这样可行

回头再来 发表于 2012-10-31 16:19:37

mov bl,ds:
mov bl,
这样都不行

回头再来 发表于 2012-10-31 16:28:50

结论 dx cx跟ax bx寄存器性质不同:'(

回头再来 发表于 2012-10-31 16:29:27

cx计数的 dx干嘛用的?

回头再来 发表于 2012-10-31 16:44:01

AX BX CX DX是CPU内部的通用寄存器中的数据寄存器,数据寄存器一般用于存放参与运算的数据或运算的结果,每一个数据寄存器都是16位的(即16个二进制位), 但又可以将高,低8位分别作为两个独立的8位寄存器使用.它们的高8位记作AH,BH,CH,DH,低8位记作AL,BL,CL,DL.这种灵活的使用方法给编程带来极大的方便,既可以处理16位数据,也能处理8位数据.
数据寄存器除了作为通用寄存器使用外,它们还有各自的习惯用法
AX 称为累加器,常用于存放算术逻辑运算中的操作数,另外所有的I/O指令都使用累加器与外设接口传送信息
BX 称为基址寄存器,常用来存放访问内在时的基地址,
CX 称为计数寄存器,在循环和串操作指令中用作计数器
DX 称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址
另外,在做双字长乘除法运算时,DX 与AX合起来存放一个双字长数(32位),其中DX存放高16位,AX存放低16位.
出自百度!

回头再来 发表于 2012-10-31 16:45:11

4个寄存器用法不同:@

技术宅 发表于 2012-11-3 16:39:56

楼主真牛逼,自问自答!
页: [1]
查看完整版本: 大家帮忙找错误