debug和源程序对指令的不同处理
[]debug程序中[0]表示 ds:0处的数据进行处理
而源程序中表示把0这个数据给要处理的数据
例 mov ax,[0]在debug中表示把ds:0处元素给ax,而在源程序中表示把0给ax
在程序中,可以直接使用段寄存器加偏移地址来确定访问的元素,例如:ds:[bx],cs:[bx],ss:[bx]等
dd
dd是用来定义双字型data segment dd 1data ends要注意dd要占两个字,db一个字节,dw一个字
c++输出16进制,10进制和2进制
hex是输出16进制,例如cout<<hex<<18<<endl;
dec十进制
另外这两种用了之后后面输出一直是这种进制,如果用了hex之后想要用十进制要写dec
二进制bitset
bitset有头文件 <bitset>
使用方法 bitset(数字),其中8的含义是要输处几位二进制数,所以如果用int型是32,如果想把字符型转换就直接写8
[bx]和loop
[bx]mov ax,[bx]
这个的意思是把ds:bx处的内容放入ax中
mov [bx],ax
这个的意思是把ax中的内容放入 地址ds:bx处
[bx+idata]实际上还有更加灵活的方式指明内存地址,就是bx后加一个数据,这个数据可以是常数,也可以是变量
例 mov ax,ds:[bx+200],也可以直接写为ds:200[bx]
这种处理方式可以方便的处理数组
loop格式:loop+标识符
执行过程:执行到loop时,先让cx-=1,再判断cx中的值,不为0则转至标号处继续执行,为0则进行下一步操作,寄存器cx用来储存循环次数
例
mov cx,3
mov ax,2
s: add ax,ax
loop s
这段程序的作用是计算2的三次方,首先让循环次数为3,ax=2,再从s处开始循环,当cx=0时退出,即进行3次
用debug跟踪loop指令 tip:汇编程序中,数据不能以字母开头,所以如A231h等等前面都要加一个零
如果想直接结束循环可以用p命令,如果用t命令的话,只会结束这一次循环