段内子程序实现从键盘输入10哥字母并将其ASCCII码存入字节数组STRING中
时间: 2024-03-01 21:49:58 浏览: 68
微信小程序的Flex布局demo-4种必备常用的Flex布局模式.zip
下面是一段使用 BIOS 中断实现从键盘输入 10 个字母并将其 ASCII 码存入字节数组 STRING 中的汇编代码。假设 STRING 的起始地址为 DS:SI,整个代码段的段名为 CODE。
```
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100h
START:
MOV AX, CODE ; 把 CODE 段的段地址放入 AX 中
MOV DS, AX ; 把段地址放入 DS 中
MOV SI, OFFSET STRING ; 把 STRING 的偏移地址放入 SI 中
MOV CX, 10 ; 循环 10 次
READ_LOOP:
MOV AH, 0 ; 调用 BIOS 中断 16h 的功能 0,等待用户输入
INT 16h
MOV [SI], AL ; 把 AL 中的 ASCII 码存入 STRING 数组中
INC SI ; 偏移量加 1,指向下一个数组元素
LOOP READ_LOOP ; 循环 READ_LOOP,直到 CX = 0
; 在这里可以对 STRING 数组进行处理
MOV AH, 4ch ; 退出程序
INT 21h
STRING DB 10 DUP (?) ; 定义 10 个字节的数组,初始值为 0
CODE ENDS
END START
```
这段代码首先把 CODE 段的段地址放入 AX 中,然后把段地址放入 DS 中。接着,它把 STRING 的偏移地址放入 SI 中,准备从键盘读入字符并存入这个数组。
循环开始之前,代码将 CX 初始化为 10,表示需要读入 10 个字符。循环体中,代码调用 BIOS 中断 16h 的功能 0,等待用户输入。用户输入的字符的 ASCII 码存放在 AL 中,代码将其存入 STRING 数组中,并将 SI 的值加 1,指向下一个数组元素。
循环结束后,可以对 STRING 数组进行处理,比如输出数组中的内容。最后,代码调用 DOS 中断 21h 的功能 4ch,退出程序。
阅读全文