OUTPUT PROC MOV BP,SP ;栈指针存入基址,便于栈中参数访问 MOV AX,[BP+2] ;栈中第一个数传给AX MOV INDEX,0 ;记录输出的位数 OUTPUT1: ;分成个位和十位分别输出 CWD DIV TEN ADD DX,30H ;转ASCII码 PUSH DX ;入栈 INC INDEX ;表示已经输出了一位 CMP AX,0 ;输出完了没 JZ OUTPUT2 ;输出完了 JMP OUTPUT1 ;还没 OUTPUT2: CMP INDEX,0 ;输出完了没 JZ OUTPUTEND ;完了 POP DX ;出栈 到DX中 MOV AH,02H ;输出 INT 21H DEC INDEX ;输出了一位 INDEX-1 JMP OUTPUT2 OUTPUTEND: RET 2 ;栈上数字占用了两个字节 OUTPUT ENDP
时间: 2024-03-09 12:44:10 浏览: 30
这段代码实现了一个将数字转换为字符串并输出到屏幕上的过程 `OUTPUT`。具体功能实现如下:
1. 将栈指针寄存器的值存入基址寄存器 BP 中,以便于访问栈中的参数。
```
MOV BP,SP
```
2. 将栈中第一个参数(从 BP+2 的位置开始)存入累加器寄存器 AX 中,即将要输出的数字。
```
MOV AX, [BP+2]
```
3. 记录输出的位数,初始化为 0。
```
MOV INDEX, 0
```
4. 进入循环,将数字分成个位和十位分别输出。
```
OUTPUT1:
```
5. 将累加器 AX 的值进行有符号扩展(CWD), 然后将 AX 中的值除以常量 TEN(即 10),商存入 AX 中,余数存入 DX 中。
```
CWD
DIV TEN
```
6. 将余数 DX 转换为对应的 ASCII 码,即加上常量 30H。
```
ADD DX, 30H
```
7. 将 ASCII 码存入栈中,以便后续输出。
```
PUSH DX
```
8. 将输出的位数加 1。
```
INC INDEX
```
9. 比较累加器 AX 中的值与 0 的大小,如果 AX 的值为 0,则跳转到 `OUTPUT2` 标号处,即跳出循环;如果 AX 的值不为 0,则跳转到 `OUTPUT1` 标号处,继续循环。
```
CMP AX, 0
JZ OUTPUT2
JMP OUTPUT1
```
10. 循环结束后,判断输出的位数是否为 0,如果是,则直接返回;如果不是,则从栈中取出一个 ASCII 码存入 DX 中。
```
OUTPUT2:
CMP INDEX, 0
JZ OUTPUTEND
POP DX
```
11. 将 02H 存入 AH 寄存器中,以便于调用 21H 中断,然后调用 21H 中断,将 DX 中的 ASCII 码输出到屏幕上。
```
MOV AH, 02H
INT 21H
```
12. 将输出的位数减 1,然后跳转到 `OUTPUT2` 标号处,继续循环。
```
DEC INDEX
JMP OUTPUT2
```
13. 输出结束后,将栈指针向上移动两个字节,返回到调用该过程的指令处。
```
OUTPUTEND:
RET 2
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)