小问题

delphihero 2002-12-23 09:14:17
有人问我汇编,偶还是3年前看过,下面题目不难。看看有错的地方没。
用分支结构或循环结构完成下列操作
向存储的十个连续单元写入1,2,3,4,5,6,7,8,9,10个数字
DATA SEGMENT
BUFFER DB 10 DUP(?)
VAR1 DB 1,2,3,4,5,6,7,8,9,10
COUNT DB 10
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS;DATA
START:MOV AX,DATA//由此往下看看
MOV DS,AX
MOV CX,COUNT
MOV SI,0
LOOPER:MOV AX,VAR1[SI];
MOV BUFFER[SI],AX;
INC SI;
DEC CX;
JNZ LOOPER;
HLT
CODE ENDS
END START
不知道是否有错误? 望不吝赐教
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
webhua 2003-01-02
  • 打赏
  • 举报
回复
byte ptr var1[0] ==10
是指 var1 的值现在是 var1 db 10,2,3,4,5 ...
因为你运算时是字运算。当 si=10时
mov ax,var1[si] 后 ah=10,al=10
mov buffer[si],ax 后 就是buffer[si]=al var1[0]=ah
ahalf 2002-12-24
  • 打赏
  • 举报
回复
类型不一致
BUFFER DB 10 DUP(?)
VAR1 DB 1,2,3,4,5,6,7,8,9,10

MOV AX,VAR1[SI]
MOV BUFFER[SI],AX
delphihero 2002-12-24
  • 打赏
  • 举报
回复
这样运算回破坏VAR1的数据,运算完最后一个循环
byte ptr var1[0] ==10
这句什么意思?var1 的数据怎么被破坏了?
webhua 2002-12-24
  • 打赏
  • 举报
回复
送入ax的是一个字,每次循环都是一个字的操作,根据题目,应该是
LOOPER:MOV Al,VAR1[SI];
MOV BUFFER[SI],Al;
而且,这样运算回破坏VAR1的数据,运算完最后一个循环
byte ptr var1[0] ==10
你看对不对。
delphihero 2002-12-24
  • 打赏
  • 举报
回复
我对汇编不了解,请解释,别问我!我不懂
wsSdj 2002-12-24
  • 打赏
  • 举报
回复
你送入AX的 是否也是一个字节呢?
delphihero 2002-12-24
  • 打赏
  • 举报
回复
怎么不一致??不都是db一个字节吗?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧