回 帖 发 新 帖 刷新版面

主题:菜鸟问问题:自学王爽教材中的一个问题。

在第六章的实验有一这样题目的:补全code段的代码,把a和b段的数据相加存入C中。我看了参考答案如下:
assume cs:code
  a segment
    db 1,2,3,4,5,6,7,8
  a ends

  b segment
    db 1,2,3,4,5,6,7,8
  b ends
  
  c segment
     db 0,0,0,0,0,0,0,0
  c ends

  code segment
  start:mov ax,a
        mov es,ax
        mov ax,c
        mov ds,ax
        mov bx,0
        mov cx,8
     s1:mov ax,es:[bx]
        add [bx],ax
        add bx,2
        loop s1
        mov ax,b
        mov es,ax
        mov ds,ax
        mov bx,0
        mov cx,8
     s2:mov ax,es:[bx]
        add [bx],ax
        add bx,2
        loop s2
        mov ax,4c00h
        int 21h
code ends
end start
我现在不明白为什么定义的是db但程序中bx为什么要加2,而不是加1。
我的理解是加2的话数据应该是dw.请教应该如何理解?
问题比较菜。。请别见笑。

回复列表 (共3个回复)

沙发

因为是mov ax,es:[bx],也就是说,我们在这个指令中,取了2个字节的数据进行了处理,所以要+2。
程序有个问题,就是CX不应该等于8,而是4.

板凳

谢谢二楼.

3 楼

王爽老师的汇编语言学习论坛(http://www.asmedu.net)
    人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。 
   所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。
   所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。 
   汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。 
   学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点和最有效途径。
                   ----摘自 汇编语言学习论坛(http://www.asmedu.net)

我来回复

您尚未登录,请登录后再回复。点此登录或注册