汇编 如何输出
发布网友
发布时间:2022-05-11 02:40
我来回答
共4个回答
热心网友
时间:2024-02-08 04:55
首先你需要将a中的十进制数据转换成ASCII码的形式储存
然后可以用bios中断,或者dos中断,推荐用dos中断
方法一:(显示字符串)
mov ah,09h; 21h中断的09h功能:显示字符串
lea dx,a; dx指向要输出字符串的首地址
int 21h; 调用21h号中断
方法二:(显示单个字符)
mov cl,n; 循环准备,n为要显示的字符总数
l1:
mov ah,02h;
mov dl,(待显示字符的ASCII码)
int 21h
loop l1
热心网友
时间:2024-02-08 04:56
可以调用dos下的中断来输出
热心网友
时间:2024-02-08 04:56
需要使用AL设置端口,貌似是9H
热心网友
时间:2024-02-08 04:57
; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push di
mov bx,10
lea di,@@Temp_Save[5]
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 6 p(?)
Dec_ASCII EndP
; -------------------------------------
a dw 56,32,58,24,85,47
Counter equ ($-a)/type a
Press_Key db 13,10,13,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es
lea si,a
mov cx,Counter
cld
@@Display: lodsw
call Dec_ASCII
cmp cx,1
jz $+8
mov dl,','
mov ah,2
int 21h
loop @@Display
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束