|
主题 : : 实验5的第5题程序运行正确(正确答案之一) [待解决] |
回复[ 9次 ]
点击[ 635次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-12-19 09:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-11-02 16:00 |
如下代码,上机运行结果完全正确!
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 dl,0
add dl,ds:[bx]
add dl,es:[bx]
mov ss:[bx],dl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-12-19 22:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-12-20 15:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-12-14 16:00 |
|
|
|
|
|
[第3楼]
[ 回复时间:2011-12-21 12:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-12-09 23:28 |
|
|
|
|
|
[第4楼]
[ 回复时间:2012-01-23 16:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-01-10 21:29 |
我的代码跟楼主的不一样!1楼帮我看看是不是对的?
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 sp,16
mov bx,0
mov dl,0
mov cx,8
s: mov dl,ds:[bx]
add dl,es:[bx]
mov ss:[bx],dl
add bx,1
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-01-23 16:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-01-10 21:29 |
开始把dl,搞成dx了,忘记题目开始定义的数据是“db”应该是字节型
搞成dx结果也是对的,但是逻辑上有错误。dx朝ss中转时,dx的数据是字型,一次占ss 2个单位,dl是计算结果dh是0,【0】的数据高位把【1】的位置占了,放【1】的时候,【1】的低位覆盖【0】高位,依次下去结果虽然对,但实际逻辑是有问题的。不知道我分析的对不对!
请tomato出来指教下:) | | |
|
|
|
|
[第6楼]
[ 回复时间:2012-01-31 09:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第7楼]
[ 回复时间:2012-02-22 10:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-20 08:57 |
4楼貌似错了
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 sp,16 (mov sp,8)
mov bx,0
;mov dl,0 这条应该在下面
mov cx,8
s: mov dl,0
mov dl,ds:[bx]
add dl,es:[bx]
mov ss:[bx],dl
add bx,1
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第8楼]
[ 回复时间:2012-02-22 11:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-20 08:57 |
晕 mov sp,8 不要也可以啊 ,你就没用push和pop 纯粹是把他当数据段了 | | |
|
|
|
|
[第9楼]
[ 回复时间:2012-04-12 19:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:2
注册日期:2010-12-02 13:35 |
用SS做数据段,如果要单步执行跟踪,T命令产生中断,会压入栈中,直到栈空间快用完的时候,继续中断压栈,有可能会产生未知错误吧,在纯DOS操作下就肯定正确? | | |
|