chengzhi 发表于 2015-11-14 12:30:28

实验6 实践课程中的程序

本帖最后由 康小泡 于 2015-11-17 09:37 编辑



不算很难,大家调试下就应该能懂了
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
start:mov ax, data
mov ds, ax
mov bx, 0

mov cx, 4
s0:push cx //使用栈存放外层循环的cx
mov si, 0

mov cx, 4
s1:mov al,
and al, 11011111B //转换为大写的方法
mov , al
inc si
loop s1

add bx, 10H
pop cx //弹出存储在外层循环中的cx
loop s0

mov ax, 4c00H
int 21H
code ends
end start

谢谢留下你的脚步,本人每天都在线学习计算机,可以相互交流,绝对不是打广告买衣服的,qq:872785786

康小泡 发表于 2015-11-17 09:38:46

看不下去那个复制的代码格式太丑了,然后帮你修改了一下。论坛有个功能可以插入代码,让你的帖子更加美腻哟{:5_91:}

chengzhi 发表于 2015-11-17 11:57:26

康小泡 发表于 2015-11-17 09:38
看不下去那个复制的代码格式太丑了,然后帮你修改了一下。论坛有个功能可以插入代码,让你的帖子更加美腻哟 ...

3q,下次换换:lol:

dps521 发表于 2015-11-18 11:12:30

呵呵我来关注一下

zlming 发表于 2015-11-18 21:00:09

我感觉有两个问题,
1. 当每次循环运行到S0的时候,下面的语句中cx 总要再次赋值为4,
2. 输入的四行字符串的偏移地址都是不一样的,而在程序中,每一次运行下来,都是对偏移地址si=0进行操作,所以不论怎么运行,都无法改第二行,第三行,所以,我认为可以在数据段中对二 三 四行的数据定义她的偏移地址,最后在使用基址相对寻址取出数据。
上面这些是我的看法,也是初学者,如果哪里有什么不对,请指出来,让我学习改正

chengzhi 发表于 2015-11-18 22:47:08

zlming 发表于 2015-11-18 21:00
我感觉有两个问题,
1. 当每次循环运行到S0的时候,下面的语句中cx 总要再次赋值为4,
2. 输入的四行字符 ...

方法有多种,逻辑对就是可以的,:handshake

爱上小刺猬 发表于 2016-1-12 10:49:31

zlming 发表于 2015-11-18 21:00
我感觉有两个问题,
1. 当每次循环运行到S0的时候,下面的语句中cx 总要再次赋值为4,
2. 输入的四行字符 ...

这程序不是一列一列的改,是一行改4个,换下一行再改4个
页: [1]
查看完整版本: 实验6 实践课程中的程序