科学发展观 发表于 2012-1-14 15:51:12

汇编问题7.9

源代码:                                                    原题是把datasg段中前4个变成大写
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,16
       mov ax,datasg
           mov ds,ax
           mov cx,4
           mov bx,0
s0:           push cx
       mov si,0
       mov cx,3

s:           mov al,
       and al, 10111111
           inc si
           loop s
           add bx,16
           pop cx
           loop s0
           mov ax,4c00h
           int 21h
codesg ends
end start
帮我看看哪有问题 编译总是通不过          

小马过河 发表于 2012-1-14 15:51:13

    mov al,   你这句是把数据取出,
       and al, 10111111 ,这里有两个错误 1是二进制数据,要加B 2 是字节第5位,不是第六位
还有 你只是取出了数据 ,取出来的数据进行了小写变大写,你并没有把整理好的数据放回原来的位置去

科学发展观 发表于 2012-1-14 16:17:18

那我要是查看结果 怎么看呀

科学发展观 发表于 2012-1-14 16:17:45

用 -d ds:0?

科学发展观 发表于 2012-1-14 16:27:26

谢谢                        

小马过河 发表于 2012-1-14 16:29:15

科学发展观 发表于 2012-1-14 16:17 static/image/common/back.gif
用 -d ds:0?

一边T运行程序 一边D 命令查看内存
页: [1]
查看完整版本: 汇编问题7.9