关键是感觉 发表于 2011-9-24 00:12:01

交作业!P158页问题7.9

问题7.9
编程,将data段中每个单词的前4个字母改为大学字母。
提示:data段中的字符串每行16个字节!
assume cs:code,ds:data,ss:stack
stack segment   
      dw 0,0,0,0,0,0,0,0
stack ends
data segment
   db '   display      '
db '   bfows      '
db '   repace       '
db '   modify       '
data ends
code segment
start: mov ax,data    ;数据地址
mov ds,ax

mov ax,stack   ;栈地址
mov ss,ax
mov sp,16

   mov bx,0

s :mov cx,4
   push cx
mov si,0

   mov cx,4
s1:mov al,
and al,11011111b
mov ,al
add si,1
loop s1

add bx,16
pop cx
loop s

mov ax,4c00h
int 21h

code ends
end start

帮我看看这代码对吗 ,谢谢!
我DUBUG 前几个都变大写了,后面的不对,大家帮我DUBUG看看


topcookie 发表于 2011-9-24 00:44:03

SP应该给21H吧

关键是感觉 发表于 2011-9-24 18:07:02

topcookie 发表于 2011-9-24 00:44 static/image/common/back.gif
SP应该给21H吧

哥!我创建了栈!SP21H溢出了

Mr.C 发表于 2011-9-24 18:35:36

前现变大写,后面没变,是因为循环弄错了。
内存中一个可以显示字母占两个字节。
一个存属性,另一个才是存ASCII码。你的si每次自增改成2。也许就可以了。:loveliness:

topcookie 发表于 2011-9-24 18:47:50

他的操作是字节操作为什么要加2呢,楼主的sp为16h是怎么得来的啊,前面定义的8个字是16字节

关键是感觉 发表于 2011-9-24 18:48:52

Mr.C 发表于 2011-9-24 18:35 static/image/common/back.gif
前现变大写,后面没变,是因为循环弄错了。
内存中一个可以显示字母占两个字节。
一个存属性,另一个才是 ...

嘿嘿,谢谢! 你们都没看出问题在哪里,这题给小弟我了提示,编程要细心。
靠山山会倒,靠人人会跑!

问题:我的二次循环S写在 MOV CX,4 那里了。OK

Mr.C 发表于 2011-9-24 18:52:54

因为两个字节才会显示一个字母。前面存字的颜色背景色信息,后面一个字节才是存ASCII码。
楼主每次自增 1 个字节。肯定是显示不了所有的字符串的

关键是感觉 发表于 2011-9-24 18:54:35

topcookie 发表于 2011-9-24 18:47 static/image/common/back.gif
他的操作是字节操作为什么要加2呢,楼主的sp为16h是怎么得来的啊,前面定义的8个字是16字节

你可能还没学懂把。
0-F 16字节! 8字。
栈压数据,SP-1 然后压数据。 F+1 是10H 16字节。SP 肯定指向10H,16D 哦

topcookie 发表于 2011-9-24 20:17:53

默认是十进制的吗,我以为16H了,呵呵
页: [1]
查看完整版本: 交作业!P158页问题7.9