汇编 如何输出
答案:4 悬赏:80 手机版
解决时间 2021-03-13 05:53
- 提问者网友:泪痣哥哥
- 2021-03-12 14:22
汇编 如何输出
最佳答案
- 五星知识达人网友:逃夭
- 2021-03-12 15:05
首先你需要将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
然后可以用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
全部回答
- 1楼网友:春色三分
- 2021-03-12 16:37
可以调用dos下的中断来输出
- 2楼网友:独钓一江月
- 2021-03-12 16:27
; 本程序在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 dup(?)
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 ;编译到此结束
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 dup(?)
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 ;编译到此结束
- 3楼网友:从此江山别
- 2021-03-12 15:12
需要使用AL设置端口,貌似是9H
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯