Push 发表于 2012-1-22 23:56:52

王爽<汇编语言>实验4(2)的题目能不能这样答?

本帖最后由 Push 于 2012-2-3 14:18 编辑

(2) 编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。
程序如下:


assume cs:code
code segment
      mov ax,0020h
      mov ds,ax
      mov bx,0
      mov cx,3f
s:   add ,1
      inc bx
      loop s
      mov ax,4c00h
      int 21h
code ends
end


eons 发表于 2012-1-22 23:56:53

你这段代码的循环处肯定不会成功。
add ,0
add ,1
一直给ds:bx 20:0 处的数据加一,循环64次,偏移地址是不会改变的

eons 发表于 2012-1-23 08:00:24

我觉得没写传送顺序的话,可以这么写。
assume cs:code
code segment
         mov ax,0020
         mov ds,ax
         mov bx,3f
         mov cx,3f
s:   subbx,1
      mov ,cx   
         loop s
         mov ax,4c00h
         int 21h
code ends
end
写错了勿喷,我没测试的、

Push 发表于 2012-1-23 10:31:04

eons 发表于 2012-1-23 08:00 static/image/common/back.gif
我觉得没写传送顺序的话,可以这么写。
assume cs:code
code segment


1~63是按顺序的吧...你说的也对,不能用add他是每个位置依次传输1、2、3、4......的,就觉得9条指令好限制,怎么写都不够多写个inc bx
我就想试试能不能找个不同的方法

Mr.HO 发表于 2012-1-23 22:48:25

试试不就知道了,DEBUG一下

tangqy 发表于 2012-1-29 02:08:00

题目上已经说是依次了,所以说被放入数据的地址一定是递增的,所以BX=BX+1才可以。楼主这个BX,也就是偏移地址不会递增,相当于原位放数据,这样是没用的。

CAICAI 发表于 2012-7-25 01:12:51

tangqy 发表于 2012-1-29 02:08 static/image/common/back.gif
题目上已经说是依次了,所以说被放入数据的地址一定是递增的,所以BX=BX+1才可以。楼主这个BX,也就是偏移地 ...

楼主其中不是有inc bx,1,怎么不是bx=bx+1;偏移地址不是递增吗?

e马先森 发表于 2017-2-17 16:49:25

{:10_256:}跟着大家学习学习

heidong84 发表于 2017-5-3 18:51:15

错的地方太多了,十万八千里啊……
自己调试吧
中间还有一条指令是根本不存在的(非法指令)
页: [1]
查看完整版本: 王爽<汇编语言>实验4(2)的题目能不能这样答?