汇编语言代码解释
2012-02-24 16:00
155 查看
1、org100h
movdx,offsetbuffer
movah,0ah
int21h
jmpprint
bufferdb10,?,10dup('')//第一个是缓冲的长度(人为设置)、第二个是实际读入的字符的数量(电脑根据实际输入的字符个数自动设置)、第三个开始存储字符。
print:
xorbx,bx
movbl,buffer[1]
movbuffer[bx+2],'$'
movdx,offsetbuffer+2
movah,9
int21h
ret
2、0a号功能使用错误。
接受输入字符串缓冲区的定义说明:
1、第一个字节为缓冲区的最大容量,可认为是入口参数;
2、第二个字节为实际输入的字符数(不包括回车键),可看作出口参数;
3、从第三个字节开始存放实际输入的字符串;
BUFDB30,0,30DUP(?)
然后就是0a号功能不是以$作为字符串结尾的,所以应该自己手动加上,这样使用9号功能的时候才不会出错。
3、div/idiv指令。
AX存放目的操作数。运算后对于字节操作AH存放模,AL存放商。
Eg:
Unsigneddivide.
Algorithm:
whenoperandisabyte:
AL=AX/operand
AH=remainder(modulus)
whenoperandisaword:
AX=(DXAX)/operand
DX=remainder(modulus)
Example:
MOVAX,203;AX=00CBh
MOVBL,4
DIVBL;AL=50(32h),AH=3
RET
Example:
MOVAX,-203;AX=0FF35h
MOVBL,4
IDIVBL;AL=-50(0CEh),AH=-3(0FDh)
RET
4、mul/imul
whenoperandisabyte:
AX=AL*operand.
whenoperandisaword:
(DXAX)=AX*operand.
Example:
MOVAL,200;AL=0C8h
MOVBL,4
MULBL;AX=0320h(800)
RET
C | Z | S | O | P | A |
r | ? | ? | r | ? | ? |
whenoperandisabyte:
AX=AL*operand.
whenoperandisaword:
(DXAX)=AX*operand.
Example:
MOVAL,-2
MOVBL,-4
IMULBL;AX=8
RET
C | Z | S | O | P | A |
r | ? | ? | r | ? | ? |
相关文章推荐
- 汇编语言,代码解释【初学者】
- <转>VC编译的除法的一段汇编代码解释
- 汇编语言常见的错误提示代码及含义
- 32位汇编语言学习笔记(9)--分析while循环的汇编代码
- 汇编语言值传递和引用传递代码分析(6)
- 汇编语言中将代码段的代码复制到指定地址的方法
- 汇编语言16位随机整数填充数组代码分析(7)
- windows下32位汇编语言学习笔记 第四章 第一个窗口程序 1 (消息的使用和入口代码)
- 简单c语言汇编后代码解释(1)
- 汇编语言:编写代码实现字符串的复制
- 对 strlen 汇编代码的解释
- 汇编代码对应的高级语言分析
- 汇编语言:编写code段中代码,将a段和b段中的数据依次相加,将结果放到c段
- 汇编语言实现递归阶乘算法代码分析(8)
- 关于GCC汇编代码的几个寄存器解释
- 汇编语言直接定指标的应用实验16代码
- 32位汇编语言学习笔记(10)--分析for循环的汇编代码
- 汇编语言数组乘法代码分析(9)
- 汇编语言显示系统时间代码分析(14)
- 从汇编语言角度看C语言代码,理解计算机如何工作