嗜血灵异狂 发表于 2012-2-21 06:48:23

不明白的问题

第二章我看到过有错误的指令比如说8位和16位寄存器不能进行数据交换可是为什么学到后边的时候去有能进行了?    比如说第二章说mov bl,ax    mov ax,bh   都是错误的    可是为什么到后边可以自己定义数据的时候去可以用 设置循环 来转换字母大小写 比如mov al,bx   我知道这个是编译器的可以写的指令   可是为什么没有错误    弄的我很模糊      那个大师告诉一下

莫名其妙 发表于 2012-2-21 15:00:05

本帖最后由 莫名其妙 于 2012-2-21 15:17 编辑

应该是不可以的 你自己用编译器编译一下一定会报错的 我昨天写第10章的课程设计1 还用用过 mov dh,ax这样是不会通过编译的 你说的转换字母大小写那是用到and or 指令 而且也不会用到16位寄存器ax bx    标准指令是and al,11011111   后面的是八位 2进制码不是16位寄存器!
al ah bl bh 等等 都是8位寄存器   这些的范围是 00-ff   两个8位寄存器 一起才顶一个16位寄存器   11111111这8条1的2进制数表示的范围最大就是ff
ax bx 等等都是16位寄存器0000-ffff这个范围是16条1   1111111111111111   才是一个16位寄存器表示的范围
                                                                                  这8条1 相当于al    这8条相当于ah
                                                                               这两个合起来是一个完整的16位寄存器


所以你说   最大存8个1 的地方 去存16个1的 数据 存的下么? mov al,ax
或者说你用 存16个1的地方 给8个1的数据放进去是往高八位上存还是往低八位上存 mov ax,al


后面你学到的 mov al, 这是将DS数据段偏移地址处的数据 存进al    不是 mov al,bx

1023545590 发表于 2012-3-3 01:19:46

可能是编译器出问题了吧?
页: [1]
查看完整版本: 不明白的问题