您的位置:首页 > 编程语言

汇编语言代码解释

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
?
?
CF=OF=0whenhighsectionoftheresultiszero.
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
?
?
CF=OF=0whenresultfitsintooperandofIMUL.

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: