此程序要注意一下几点:1.dos1号功能——带回显的键盘输入,自动存入al2.dos7号功能——不带回显的键盘输入,自动存入al,若要在屏幕中显示要调用DOS2号功能3.将输入的多个二进制数转换为ASCII码input:
mov ah,1 int 21h add ...
分类:
其他好文 时间:
2014-05-25 19:48:43
阅读次数:
257
简单的call函数过程
1.参数入栈,返回地址入栈。在一个栈帧里,call function的完整过程应该是这样的,call调用的过程要经历两个过程,一个是首先把调用函数之前的指令的下一条指令地址压入栈中(push ebp),作为返回地址,也就是保存旧栈地址,接着会跳转到被调函数的地址入口。呵呵,现在就是借此来恶补汇编哈。
2.代码区跳转。在执行被调函数的时候,为函数重新开辟栈帧,(mov ebp,esp)这句的意思是将旧栈顶换为新栈的底,这里的新栈一般是由函数专属的哈, 下面就是用sub esp, ...
分类:
其他好文 时间:
2014-05-22 11:34:25
阅读次数:
189
一、汇编语言中PTR的含义及作用mov ax,bx
;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD”mov ax,word ptr
[bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byt...
分类:
其他好文 时间:
2014-05-21 21:08:19
阅读次数:
1846
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7
MOV SI, 003CH ;0FH
MOV [SI], AX
MOV AX, CS
MO...
分类:
其他好文 时间:
2014-05-21 08:09:28
阅读次数:
252
1.简介:编译器是将一种语言翻译成另一种语言的程序。编译器将源程序的代码作为输出,从而产生用目标语言编写的等价程序。例如源代码为C/C++等高级语言,那么目标语言就是目标机器的机器代码,也就是可以直接运行的机器代码(各种二进制)。下面就是一个编译过程的简单例子:
x=2 (高级语言)
MOV x,2 (汇编语言)
C7 06 0000 0002 (机器代码)
2.相关程序...
分类:
其他好文 时间:
2014-05-18 13:41:56
阅读次数:
263
书中的42页,监测点4.2第一题,代码如下:
mov ax, 0xb800
mov ds, ax
mov [0x00], 'a'
mov [0x02], 's'
mov [0x04], 'm'
jmp $
编译会报错
提示没有指定操作数长度,修改后为
mov ax, 0xb800
mov ds, ax
mov byte [0x00], 'a'
mov byte [0x02], ...
分类:
编程语言 时间:
2014-05-15 11:27:09
阅读次数:
380
function Fun(x: Integer): Integer;asm mov ecx,
&x dec ecx {汇编中的 dec 是减 1 指令, 和 Delphi 是一样的} mov @Result, ecx {在本例中去掉 @ 也可以,
暂时不知怎么回事}end;去掉两个符号,对...
分类:
其他好文 时间:
2014-05-09 09:20:32
阅读次数:
323
实验环境:intel x386
一。要求:将3000H单元开始置数为00H-0FH
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK
START: PUSH DS
XOR AX, AX
MOV DS, AX
MOV SI, 3000H
MOV CX...
分类:
编程语言 时间:
2014-05-09 06:33:53
阅读次数:
372
1.汇编语言实现,汇编和链接器分别为as86和ld86。代码如下:
.globl begtext,begdata,begbss,endtext,enddata,endbss
.text
begtext:
.data
begdata:
.bss
begbss:
.text
BOOTSEG=0x7c0
entry start
start:
jmpi go,BOOTSEG
go:
mov ax,...
分类:
其他好文 时间:
2014-05-09 06:29:56
阅读次数:
365
chapter 8 内核代码
8.1.1中断处理程序
traps.c
#define get_seg_byte(seg,addr) ({ \ //取seg中addr处1byte
register char __res; __asm__("push %%fs;mov %%ax,%%fs;movb %%fs:%2,%%al;pop %%fs" ...
分类:
系统相关 时间:
2014-05-09 01:48:26
阅读次数:
418