DATA SEGMENT
DATA1 DB 32H, 39H, 30H, 35H, 34H
DATA2 DB 33H
RESULT DB 6 DUP(00H)
DATA ENDS
STACK SEGMENT STACK’STACK’
STA DB 30 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, STACK
MOV SS, AX
MOV AX, TOP
MOV SP, AX
MOV SI, OFFSET DATA2
MOV BL,[SI] ; 乘数2->BL
AND BL,00001111B ;屏蔽高4位,ASCn码转化六
MOV SI,OFFSET DATA1
MOV DI,OFFSET RESULT
MOV CX,05
LOOPl: MOV AL,[SI]
AND AL,00001111B ;取被乘数1,ASCll变十六数
INC SI ;指向被乘数 1的十一字符元
MUL BL ;相乘
AAM ;AAM调整
ADD AL,[DI] ;结果低位与前次计算的进位加
AAA ;AAA调整
MOV [DI],AL
INC DI ;结果送存到卜一单元
MOV [DI], AH
LOOP LOOPl ;计算结果高位进位送存
MOV CX,06
MOV SI,OFFSET RESULT + 5
DISPL: MOV AH,02
MOV DL,[SI]
ADD DL,30H
INT 21H
DEC SI
LOOP DISPL ;显示结果
MOV AX,4C00H
INT 21H ;结束
CODE ENDS
END START
我给你一个把十进制显示到屏幕上的程序吧。。至于乘法运算,的确容易。。
data segment
data ends
stack segment
db 50h dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov bx,0b800h
mov ds,bx
mov si,0
mov ax,stack
mov ss,ax
mov sp,50h
call dtoc
mov ax,4c00h
int 21h
dtoc: push dx
push cx
push ax
push si
push bx
mov bx,0
mov ax,12666
s1: mov cx,10d
mov dx,0
div cx
mov cx,ax
jcxz s2
add dx,0030h
push dx
inc bx
jmp short s1
s2: add dx,30h
push dx
inc bx
mov cx,bx
mov si,0
s3: pop ax
mov ds:[si],al
add si,2
loop s3
pop bx
pop si
pop ax
pop cx
pop dx
ret
code ends
end start
这个教材上有吧。好长时间没写汇编代码了,都忘了