hackiy 发表于 2012-5-29 21:34:47

实验6问题7.9详解

;问题7.9
assume cs:codesg, ss:stacksg, ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display      '
db '2. brows      '
db '3. replace      '
db '4. modify       '
datasg ends
codesg segment
start: mov ax,stacksg   ;程序入口
mov ss,ax
mov sp,10h
mov ax,datasg
mov ds,ax
sub bx,bx    ;从第0行开始
mov si,3    ;从第3列开始
mov cx,4    ;需要操作4行
s: push cx    ;压入当前操作行数
   mov cx,4   ;需要操作4列
   s0: mov al,bx ;读取bx行si列字节型的值
    and al,11011111B;运算bx行si列字节型的值
    mov bx,al ;写入bx行si列字节型的值
    inc si   ;增加操作列数(si)=(si)+1
   loop s0
add bx,10h    ;增加操作行数10h=16
pop cx   ;弹出当前操作行数
loop s
over: mov ax,4c00h   ;程序出口
int 21h
codesg ends
end start

wAterLoo 发表于 2012-5-29 22:41:59

本帖最后由 wAterLoo 于 2012-5-29 22:43 编辑

楼主,把代码好好编辑下,虽然很详细,但是一眼看下来,太乱了,不会想看第二眼
注意代码的缩进,可能有些麻烦,但是居然是分享,就要让人一看就明白
否则你的分享没一点意义

hackiy 发表于 2012-5-31 22:35:45

wAterLoo 发表于 2012-5-29 22:41 static/image/common/back.gif
楼主,把代码好好编辑下,虽然很详细,但是一眼看下来,太乱了,不会想看第二眼
注意代码的缩进,可能有些 ...

在我的notepad++里都是排序好的,论坛的帖子编辑器有问题而已。

张维维 发表于 2017-4-9 00:15:10

很感谢你的分享,但是你的程序出了点小毛病
应该把mov si,3    ;从第3列开始放在s 后面
页: [1]
查看完整版本: 实验6问题7.9详解