实验5 第5小题
(5)程序如下,编写code段中代码,将a段和b段中的数据依次相加,将结果存到C段中。assume cs:codea segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endsc segment db 0,0,0,0,0,0,0,0c endscode segmentstart: ?
mov ax,4c00h int 21hcode endsend start
我写程序如下,不知对不对,请各位帮助一下,assume cs:codea segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endsc segment db 0,0,0,0,0,0,0,0c endscode segmentstart: 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: add ,es: mov ss:, inc bx loop s mov ax,4c00h int 21hcode endsend start
望各位不吝赐教,谢谢各位大虾!!!!!错在哪里,能帮我找出来,便于我以后继续学习{:5_110:} 同意楼上的说法,你在debug实验一下add ,es:
mov ss:,
是会ERROR的
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: ;add ,es:
mov al,
add al,es:
;mov ss:,
mov ss:,al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
MOV 指令不能同时为内存操作数{:5_108:}加油兄弟!! s0512 发表于 2012-12-11 23:48 static/image/common/back.gif
assume cs:code
a segment
s: ;add ,es: 这一句是把a与b相加,再把值送到 DS:中去 两个值求和
mov al, 这一句把DS:中的数据送到AX寄存器中低位"al "中去 复制数据
add al,es: 这一句是把b 的数据与:DS:中的数据相加,再把值送到 “al" 中去 两上值求和
;mov ss:, 这一句是把ds:中的数据复制到ss:中去
mov ss:,al 这一句是把上面第三句 al 中的数据复制到ss:中去,就想当于复制到 "c"中去
inc bx
loop s
以上是我对每句的理解,看对不对,谢谢各位的帮助。 到拉萨去兜风 发表于 2012-12-12 19:46 static/image/common/back.gif
s: ;add ,es: 这一句是把a与b相加,再把值送到 DS:中去 两个值求和 ...
对的。。。
不过SS通常用在栈操作。。这种写法还是比较另类 楼上答案都很正确 我总感觉还差哪么一丁点东西,在思考中,或许就是这个写法本身就是一个BUG程序
页:
[1]