寄存器BP初始值为零,为什么还要手动mov bp,0初始化
时间:2011-11-27
来源:互联网
代码如下,为什么把第22行的mov bp,0注释掉以后,程序会不一样
Assembly code
Assembly code
assume cs:code,ds:data,es:strack data segment db 'welcome to masm' data ends strack segment db 0,0,0,0,0,0 strack ends code segment start: mov ax,strack mov ss,ax mov sp,8 mov ax,data mov ds,ax mov ax,0B800h mov es,ax mov bp,0 ;就是她,爱她不容易 mov bx,0 mov cx,3 s: push cx mov bx,0 mov di,0 mov cx,15 s1: mov al,[bx] mov es:[bp][di],al inc bx add di,2 loop s1 add bp,160 pop cx loop s mov bp,0 mov si,1 mov al,11110010b mov cx,15 s2: mov es:[bp][si],al add si,2 loop s2 mov bp,160 mov si,1 mov al,10100100b mov cx,15 s3: mov es:[bp][si],al add si,2 loop s3 mov bp,320 mov si,1 mov al,11110001b mov cx,15 s4: mov es:[bp][si],al add si,2 loop s4 mov ax,4c00h int 21h code ends end start
作者: glouze 发布时间: 2011-11-27
你怎么敢保证每次初始值都是0?调试和非调试下都是0?
作者: mydo 发布时间: 2011-11-27
是阿,你的程序只有那一行对Bp赋值为0,前面的地方都没赋值,怎么就一定是0?
作者: PointertoPointer 发布时间: 2011-11-27
整个计算机只有一个BP,却有多个程序在使用这一个BP。所以当你使用BP时,并不能保证它里边的数据一定是零。必需先初始化!
作者: gaoyue_qq_1664507529 发布时间: 2011-11-27
明白了
LZ看见debug总会把bp置为零,就以为平时载入程序也会这样
问一下相关的问题
请问shell载入程序的时候,会不会在cx中写入程序的长度(就像debug)
平时载入程序的时候,会自动初始化哪几个寄存器
LZ看见debug总会把bp置为零,就以为平时载入程序也会这样
问一下相关的问题
请问shell载入程序的时候,会不会在cx中写入程序的长度(就像debug)
平时载入程序的时候,会自动初始化哪几个寄存器
作者: glouze 发布时间: 2011-11-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28