C语言鱼c 发表于 2014-4-6 20:09:59

第九行,,,不能这么写吗?

题目要求将ffff6H地址的内存单元的值(一个字节),乘3,放到寄存器dx中
帮我看看有什么错,,,,,
第九行,,,不能这么写吗?

为之疯狂 发表于 2014-4-6 20:14:49

肯定啊,里面只能存放的是bx,di,si,db,这样的寄存器,以为这几个寄存器都对应了相应的 段寄存器ds,ss
而你里面写的话,编译器不认识al,因为他没有对应的段寄存器

C语言鱼c 发表于 2014-4-6 20:34:48

为之疯狂 发表于 2014-4-6 20:14 static/image/common/back.gif
肯定啊,里面只能存放的是bx,di,si,db,这样的寄存器,以为这几个寄存器都对应了相应的 段寄存器ds,ss
...


还是错,,,,,,,,,不知道为什么,,,试了n变了

cqxcool 发表于 2014-4-6 20:36:33

C语言鱼c 发表于 2014-4-6 20:34 static/image/common/back.gif
还是错,,,,,,,,,不知道为什么,,,试了n变了

mov ax, 啊:sweat:

wiliam 发表于 2014-4-6 21:17:24

帮你改好了 楼主好好研究
assume cs:code
code segment
start:
mov ax,0ffffh
mov ds,ax
mov di,0006h
mov bx,ds:
mov bh,00h
mov dx,0h
mov cx,3
s:
add bx,bx
loop s
mov ax,4c00h
int 21h
code ends
end start

wiliam 发表于 2014-4-6 21:20:00

其实 ax,bx,cx ,dx【】里面可以直接加你想要的偏移地址 下面是直接的寻址
cs:code
code segment
start:
mov ax,0ffffh
mov ds,ax
mov bx,ds:
mov bh,00h
mov dx,0h
mov cx,3
s:
add bx,bx
loop s
mov ax,4c00h
int 21h
code ends
end start

C语言鱼c 发表于 2014-4-7 08:29:14

wiliam 发表于 2014-4-6 21:17 static/image/common/back.gif
帮你改好了 楼主好好研究
assume cs:code
code segment



di是什么?

我疯狂我成功 发表于 2014-4-7 08:40:15

应该是dl吧

ly8996455 发表于 2014-4-7 09:07:33

al 和bx之间都不能传输吧   只有ax和bx   书中把ax分为2个部分是因为以前的8位机   搂主可以直接用ax的值传输    因为命令al为06   ah为0后    ax的值和al的值是相等的    我也是第一次学汇编错了提点下

fulisen 发表于 2014-4-7 09:32:42

:big京津冀00

wiliam 发表于 2014-4-7 11:35:23

C语言鱼c 发表于 2014-4-7 08:29 static/image/common/back.gif
di是什么?

你可以这么 理解bx的小三和 bx的功能一样

wiliam 发表于 2014-4-7 11:36:35

我疯狂我成功 发表于 2014-4-7 08:40 static/image/common/back.gif
应该是dl吧

dl是dldi是di:sweat:
页: [1]
查看完整版本: 第九行,,,不能这么写吗?