帮我翻译下下面的代码,有些地方不理解?

来源:百度知道 编辑:UC知道 时间:2024/06/21 13:02:01
下面代码为把数组addr中的元素显示出来
data segment
addr db 10,25,65,45,40
data ends

program segment
main proc far
assume cs:program,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
LEA SI,addr
mov cx,5
NEXT:
mov al,[si]
aam ;这边开始就不太懂了,aam是什么有什么用
or ax,3030h ;这行的作用是什么
xchg ah,al
mov dx,ax
mov ah,2
int 21h
MOV DL,DH
INT 21H
mov dl,20h
int 21h
INC SI
LOOP NEXT
MOV AH,0
int 16H
ret
main endp
program ends
end start

ASCII码乘调整指令AAM(Ascii Adjust After Multiplication)

该指令是用于调整寄存器AL之值,该值是由二个单BCD码字节用无符号乘指令MUL所得的积。其调整规则如下:

AH←AL/10(商),AL←AL%10(余数)

指令的格式:AAM
受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)

例如:

MOV AL, 9
MOV BL, 8
MUL BL ;AL=72D
AAM ;AH=7, AL=2

下面那些指令就好懂了吧。