DOS INT 21H中断 2号功能暗改AL

注意此时AX=0200,DX=0057

执行INT 21H之后:

可以看到执行完“???    [BX+SI]”之后,AL就变为了57H,和DL相同。

部分INT 21H功能表:

所以究竟是什么原因呢?

-----------------------------------------------分割线(以下内容与正文无关)----------------------------------------

汇编语言,显示字符的ASCII码,16进制表示:

dsg segment
	cr db 0DH, 0AH, '$'
	i_p db 'char: ', '$'
	o_p db 'ASCII: ', '$'
dsg ends
ssg segment
db 256 dup(?)
ssg ends
csg segment
	assume cs:csg, ds:dsg, ss:ssg
start:
	mov ax, dsg
	mov ds, ax
T:	mov dx, offset cr	; 回车
	mov ah, 9
	int 21H
	mov dx, offset i_p		; 输入提示
	mov ah, 9
	int 21H
	mov ah, 1	; 读取一个键盘字符
	int 21H
	mov dx, offset cr
	mov ah, 9	; 回车
	int 21H
	mov dx, offset o_p	; 输出提示
	int 21H
	
	mov dl, al
	mov cl, 4
	shr dl, cl		; 显示高四位
	call show_char
	mov dl, al
	and dl, 0FH	; 显示低四位
	call show_char
	
	mov dx, offset cr
	mov ah, 9	; 回车
	int 21H
	jmp T
	mov ah, 4CH
	int 21H


show_char proc near
	push ax		; DOS中断2号功能会暗改al
	cmp dl, 0AH
	jnl a_f
	add dl, 30H
	jmp show
a_f:	add dl, 37H
show:
	mov ah, 2
	int 21H
	pop ax
	ret
show_char endp
csg ends
	end start

相关推荐

  1. 2.21qt

    2024-06-18 00:08:02       49 阅读
  2. 2.22qt

    2024-06-18 00:08:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 00:08:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 00:08:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 00:08:02       87 阅读
  4. Python语言-面向对象

    2024-06-18 00:08:02       96 阅读

热门阅读

  1. LeetCode 58. 最后一个单词的长度

    2024-06-18 00:08:02       32 阅读
  2. 关于lspci命令的相关使用

    2024-06-18 00:08:02       26 阅读
  3. Glide 缓存机制研究及同命名图片的替换回显

    2024-06-18 00:08:02       26 阅读
  4. 多模态AI和机器人技术的演变

    2024-06-18 00:08:02       29 阅读
  5. C++ day3

    C++ day3

    2024-06-18 00:08:02      27 阅读
  6. Spring事务管理与Spring AOP详解

    2024-06-18 00:08:02       32 阅读
  7. MTU简介

    2024-06-18 00:08:02       32 阅读
  8. C语言笔记25 •顺序表介绍•

    2024-06-18 00:08:02       31 阅读
  9. 什么是内存泄漏?如何避免?

    2024-06-18 00:08:02       32 阅读
  10. spring-websocket实现(一)

    2024-06-18 00:08:02       32 阅读