wish 发表于 2011-11-2 01:40:10

实验5 第五题

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
   
   d segment
            db 0,0,0,0,0,0,0,0
   d ends
   
   code segment
   
   start: mov ax,a
            mov ds,ax    ,把a段的数据放入ds寄存器中
            mov ax,b
            mov es,ax    ,把b段的数据放入ES寄存器中
            mov ax,d
            mov ss,ax   ,把d段的数据放入SS寄存器中(这里课本是C段,但用c无法编译所以换d)
            mov bx,0      ,把dx置0,因为下面用它做各个段的内存偏移地址使用,必须从0开始
            mov ah,0      ,把寄存器ax高位置零,因为下面用来存储a,b段的数值相加,且它们是字节型数据
            mov cx,8       ,因为有8个字节型的内存数据,待会循环从0到7分别加1使用
      s: mov al,ds: ,把a段的第一个字节型数据值存入寄存器al中
          add al,es:   ,把a段和b段的第一个字节型数据值相加之后存入到al中
          mov ss:,al    ,最后把a段和b段的第一个字节型数据值的和存入课本要求的d段中
          inc bx               ,每次执行后BX作为内存单元都自动加1
          loop s               ,依次循环
                  mov ax,4c00h               
                  int 21h
                            
   code ends
       end start
初学编程 各位前辈帮忙看看思路和答案做得对否 感谢了
最后我在电脑中debug得到SS寄存器中的值依次为02,04,06 ,08 ,0a,0c,0E,10
页: [1]
查看完整版本: 实验5 第五题