show 发表于 2012-10-25 20:14:08

王爽汇编第二版,实验5 第五小问,答案中的s标号后面的几个ax 为什么不能改成al 呢?

(5)程序如下,编写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 ds,ax

      mov ax,b

      mov es,ax

      mov ax,c

      mov ss,ax

      mov bx,0

      mov cx,8

s:      mov ax,

      mov ss:,ax

      mov ax,es:

      add ss:,ax

      inc bx

      loop s

      mov ax,4c00h

      int 21h

code ends

end start
谁能给我详细的解释一下s循环体(讲到bx变成2就好了)?我没有鱼币了,谢谢了

huise865 发表于 2012-10-26 00:11:21

觉得代码好像有问题,mov ss:,ax这样行吗?

核桃哥 发表于 2012-10-26 11:53:04

因为栈段寄存器是以16位寄存器进行存储的,例如:你要写入26H入栈,那么在栈段中,26H以0026H进行存储的,简单说在栈段里没有高地位之分,不管是入栈还是出栈都是16位,所以为了与栈段匹配,必须要16位寄存器。

推荐软件:核桃哥学习笔记1.3版——智能判断填空题
          http://bbs.fishc.com/thread-23229-1-1.html
页: [1]
查看完整版本: 王爽汇编第二版,实验5 第五小问,答案中的s标号后面的几个ax 为什么不能改成al 呢?