汇编语言的一道题
七.请写一个程序实现如下功能:把从内存单元F000H:0000H开始的200个字节作为无符号数,求它们的和,并用十进制数在屏幕上显示出来。...
七. 请写一个程序实现如下功能:把从内存单元F000H:0000H开始的200个字节作为无符号数,求它们的和,并用十进制数在屏幕上显示出来。
展开
1个回答
展开全部
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 dup(?)
Dec_ASCII EndP
; -----------------------------------------
Start: mov ax,0F000H
mov ds,ax
xor si,si
mov cx,200
xor bx,bx
xor ah,ah
cld
s1: lodsb
add bx,ax
loop s1
mov ax,bx
push cs
pop ds
call Dec_ASCII
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 dup(?)
Dec_ASCII EndP
; -----------------------------------------
Start: mov ax,0F000H
mov ds,ax
xor si,si
mov cx,200
xor bx,bx
xor ah,ah
cld
s1: lodsb
add bx,ax
loop s1
mov ax,bx
push cs
pop ds
call Dec_ASCII
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询