Sky1991 发表于 2012-6-23 15:56:13

关于那些第七章中的实验,怎么验证是否执行了呢?

比如那个首字幕大写的实验,我再怎么查看呢,一下是个缩减的,我怎么看最后‘i’‘d’‘d’是否编程IDD了呢
assume cs:codesg,ds:datasg
datasg segment
        db '1.ibm   '
        db '2.dec   '
        db '3.dos   '
datasg ends

codesg segment
start:        mov ax,datasg
                mov ds,ax
                mov bx,0
               
                mov cx,3
        s:        mov al,
                and al,11011111b
                mov ,al
                add bx,16
                loop s
               
                mov ax,4c00h
                int 21h
codesg ends
end start
               

fujian810 发表于 2012-6-23 15:56:14

先纠正你程序中的一个错误, add bx,16应该为add bx,8
想要查看结果是否正常运行是叫简单的:
1、编辑好程序后,在masm下的bin目录中编译asm程序ml ts7.asm,这里假设文件名为ts7.asm
2、命令行模式下,debug ts7.exe
3、用t命令单步执行程序,mov ds,ax这句指令执行后查看下ds的值,附件中截图是1463h,因此用d命令查看下d 1463:0,这里就能看到数据段的内容;
4、然后继续t命令单步执行程序,到程序运行到mov ax,4c00h的时候,在用d命令查看d 1463:0,这个时候你能看到几个字母发生变化了,具体看rar中的截图。

3195884 发表于 2012-6-23 19:04:23

d ds:0



Sky1991 发表于 2012-6-23 21:27:04

fujian810 发表于 2012-6-23 21:02 static/image/common/back.gif
先纠正你程序中的一个错误, add bx,16应该为add bx,8
想要查看结果是否正常运行是叫简单的:
1、编辑好程 ...

bx,是16位的啊,为什么不行呢,bl是8位啊

fujian810 发表于 2012-6-23 22:44:37

Sky1991 发表于 2012-6-23 21:27 static/image/common/back.gif
bx,是16位的啊,为什么不行呢,bl是8位啊

这时因为:db '1.ibm   ','1.ibm   '占8个byte,即ibm中i的存储地址同dec中d的偏移地址相差8,因此偏移地址加8,跟bl是否为8位毫无关系。

Sky1991 发表于 2012-6-24 09:10:25

fujian810 发表于 2012-6-23 22:44 static/image/common/back.gif
这时因为:db '1.ibm   ','1.ibm   '占8个byte,即ibm中i的存储地址同dec中d的偏移地址相差8,因此偏移地 ...

哦~~谢谢:loveliness:,那如果我后面的空格(在单引号内的)加上前面的字符一共16位的话,这里就是16了,是嘛?

fujian810 发表于 2012-6-24 09:32:54

Sky1991 发表于 2012-6-24 09:10 static/image/common/back.gif
哦~~谢谢,那如果我后面的空格(在单引号内的)加上前面的字符一共16位的话,这里就是16了, ...

对头,恭喜你会举一反三了

9o.控゛总督-魔 发表于 2012-6-24 12:39:43

V2012 Build0601
页: [1]
查看完整版本: 关于那些第七章中的实验,怎么验证是否执行了呢?