请教,dos实模式下读取内存的问题
汇编吧
全部回复
仅看楼主
level 1
比如说一个地址0xc5555,我想输出这个地址保存的值,怎么算呀[泪]
书上说,段基地址+段内便移,已经写出程序算成0xc000和0x5555
接下来怎么继续下去啊完全没有头绪[泪][泪][泪]
2019年07月26日 05点07分 1
level 1
有大佬嘛[喝酒]汇编一头懵
2019年07月26日 05点07分 2
level 13
以x86汇编为例,这要看你要输入地址中的byte,word,还是dword,
因为机器码(不是汇编码)的每一条指令都要确切表示其长度,比如
mov al,[1000h] ;al是byte
mov ax,[1000h] ;ax是word
mov byte ptr [1000h],1 ;地址的话,要确切指出是byte
mov word ptr [1000h],1 ;地址的话,要确切指出是word
假定要输出byte吧
mov ax,0c000h ;设值
mov ds,ax ;ds=ax
mov bx,5555h ;设值
mov al,ds:[bx] ;取该地址的byte值
aam ;转换为bcd
or ax,3030h ;再转换为ascii
push ax ;保存
mov dl,ah ;取十位
mov ah,2 ;输出函数
int 21h ;输出
pop dx ;取回个位
int 21h ;输出
2019年07月28日 02点07分 3
谢谢[乖]我再试试
2019年07月29日 00点07分
对了,请问,如果想输出这个结果后面的内容,是将他不断的右移一个byte吗
2019年07月29日 00点07分
我觉得想要输出后面的应该要变止寻址 或者 在ds段定义一个变量也行 然后依次加一
2019年08月04日 03点08分
1