|
主题 : : 7.9问题 代码出现错误了 [已解决] |
回复[ 4次 ]
点击[ 409次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-02-27 14:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31 |
assume cs:code,ss:stack,ds:data
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
stac: mov ax,stack
mov ss,ax
mov sp,10H
mov ax,data
mov ds,ax
mov bx,0
mov cx,4
s0:push cx
mov si,0
mov cx,3
s: mov al,ds:[bx+si+3]
and al,11011111B
mov [bx+si],ax
inc si
loop s
add bx,16
pop cx
loop s0
mov ax,4c00H
int 21h
code ends
end stac
=======
那里错了 高手讲解下 | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-02-27 15:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31 |
挨 不用心的后果难以想象! 程序通过咯
程序如下:
assume cs:code,ss:stack,ds:data
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
stac: mov ax,stack
mov ss,ax
mov sp,10H //设置栈空间为16个
mov ax,data
mov ds,ax
mov bx,0 //设置DATA起始地址
mov cx,4 //外层循环4次 就是 DATA 4行
s0:push cx //CX 进入循环 CX-1 入栈数为 4-1
mov si,0
mov cx,4 //内层循环4次 就是DATA的第4-6列
s: mov al,ds:[bx+si+3] //把DATA的第一行第四列的字母传送到 低8位AL中
and al,11011111B //AND 就是 (补码或是反码我给忘了大家可以看下 微机原理组成有介绍)
//AL=01100100B+11011111B=01000100B
mov [bx+si+3],al //改成大写传送到 DATA[BX]中
inc si //SI+1
loop s //返回 循环
add bx,16 //S 循环完 BX+16 跳到 DATA第二行
pop cx // CX出栈数为3 外层数为 3, S在次循环 CX为 CX-1入栈到STACK:sp中
loop s0
mov ax,4c00H
int 21h
code ends
end stac
这是我的分析 请高手分析下对不对 | | |
|
|
|
|
[第2楼]
[ 回复时间:2011-03-01 21:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-05 22:29 |
一楼说的很清楚,你把不该改的数据改了,反而没改该改的。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-03-04 14:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31 |
回复:[第2楼]
------------------
呵呵 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-04-21 17:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31 |
此贴由 贴主 于 [ 2011-04-21 17:28 ] 结贴。 结贴原因:问题已解决 | | |
|