汇编语言输入输出遇到问题,求高手帮忙
代码如下,想要完成10个学生信息的输入输出,请高手帮忙看看问题出在哪里?
data segment
student_id db 10 dup(5,?,5 dup('$')) ;学号4位
student_name db 10 dup(6,?,6 dup('$')) ; 姓名5位字符
student_sex db 10 dup (?)
student_score db 10 dup (2,?,2 dup('$'))
table dw 4 dup(?)
mess1 db "please input student's ID that you want to delete:",0ah,0dh,'$'
data ends
code segment
assume ds:data,cs:code,es:data
start:
mov ax,data
mov ds,ax
mov es,ax
;-------------------------------------------宏定义
pianyi macro num,ad ;opr1是cx,opr2是数组首地址
push cx
mov ax,10 ;循环3次
sub ax,num ;计算每个数组的偏移地址,存入AX
mul al,10 ;每个数组是10个元素
add ad,ax
pop cx
endm
;---------------------------------------------宏定义换行回车
endl macro
push dx
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
pop dx
endm
;-------------------------------------------- ;定义地址表
mov table ,offset student_id
mov table+2,offset student_name
mov table+4,offset student_sex
mov table+6,offset student_score
mov bx,offset table ;地址表首地址放入bx
;--------------------------------------------
call input
call delete
call print
mov ax,4c00h
int 21h
input proc near
mov cx,10
input_again:
mov dx,[bx] ;输入学号
pianyi cx,dx
mov ah,10
int 21h
endl
mov dx,[bx+2] ;输入姓名
pianyi cx,dx
mov ah,10
int 21h
endl
mov di,[bx+4] ;准备输入性别
mov ax,10 ;计算student_sex数组的偏移
sub ax,cx
add di,ax
mov ah,1
int 21h
mov byte ptr [di],al
endl
mov dx,[bx+6] ;输入成绩
pianyi cx,dx
mov ah,10
int 21h
endl
loop input_again ;循环10次
ret
input endp
print proc near
mov cx,10
mov dh,0
print_again:
mov dx,[bx]+2 ;输出学号
pianyi cx,dx
mov ah,9
int 21h
endl
mov dx,[bx+2]+2 ;输出姓名
pianyi cx,dx
mov ah,9
int 21h
endl
mov di,[bx+4] ;输出性别
mov ax,10 ;计算student_sex数组的偏移
sub ax,cx
add di,ax
mov al,byte ptr [di]
mov ah,2
int 21h
endl
mov dx,[bx+6]+2 ;输出成绩
pianyi cx,dx
mov ah,9
int 21h
endl
loop print_again ;循环10次
ret
print endp
;-----------------------------------------
delete proc near
lea dx,mess1
mov ah,9
int 21h
ret
delete endp
;------------------------------------------
code ends
end start
data segment
student_id db 10 dup(5,?,5 dup('$')) ;学号4位
student_name db 10 dup(6,?,6 dup('$')) ; 姓名5位字符
student_sex db 10 dup (?)
student_score db 10 dup (2,?,2 dup('$'))
table dw 4 dup(?)
mess1 db "please input student's ID that you want to delete:",0ah,0dh,'$'
data ends
code segment
assume ds:data,cs:code,es:data
start:
mov ax,data
mov ds,ax
mov es,ax
;-------------------------------------------宏定义
pianyi macro num,ad ;opr1是cx,opr2是数组首地址
push cx
mov ax,10 ;循环3次
sub ax,num ;计算每个数组的偏移地址,存入AX
mul al,10 ;每个数组是10个元素
add ad,ax
pop cx
endm
;---------------------------------------------宏定义换行回车
endl macro
push dx
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
pop dx
endm
;-------------------------------------------- ;定义地址表
mov table ,offset student_id
mov table+2,offset student_name
mov table+4,offset student_sex
mov table+6,offset student_score
mov bx,offset table ;地址表首地址放入bx
;--------------------------------------------
call input
call delete
call print
mov ax,4c00h
int 21h
input proc near
mov cx,10
input_again:
mov dx,[bx] ;输入学号
pianyi cx,dx
mov ah,10
int 21h
endl
mov dx,[bx+2] ;输入姓名
pianyi cx,dx
mov ah,10
int 21h
endl
mov di,[bx+4] ;准备输入性别
mov ax,10 ;计算student_sex数组的偏移
sub ax,cx
add di,ax
mov ah,1
int 21h
mov byte ptr [di],al
endl
mov dx,[bx+6] ;输入成绩
pianyi cx,dx
mov ah,10
int 21h
endl
loop input_again ;循环10次
ret
input endp
print proc near
mov cx,10
mov dh,0
print_again:
mov dx,[bx]+2 ;输出学号
pianyi cx,dx
mov ah,9
int 21h
endl
mov dx,[bx+2]+2 ;输出姓名
pianyi cx,dx
mov ah,9
int 21h
endl
mov di,[bx+4] ;输出性别
mov ax,10 ;计算student_sex数组的偏移
sub ax,cx
add di,ax
mov al,byte ptr [di]
mov ah,2
int 21h
endl
mov dx,[bx+6]+2 ;输出成绩
pianyi cx,dx
mov ah,9
int 21h
endl
loop print_again ;循环10次
ret
print endp
;-----------------------------------------
delete proc near
lea dx,mess1
mov ah,9
int 21h
ret
delete endp
;------------------------------------------
code ends
end start
...全文
相关推荐
_宏汇编语言程序设计编程指导-PDG
例如,定义一个求平方的宏,可以在不同的地方方便地使用,而无需写重复的计算逻辑。在学习宏汇编语言时,首先需要掌握基本的汇编指令,包括数据处理指令、转移指令、输入输出指令等。
汇编语言指令大全 X86和X87汇编指令大全(带注释).zip
掌握汇编语言能够让你更深入地了解计算机硬件,从而在遇到性能瓶颈或特定问题时能够提供针对性的解决方案。
汇编语言指令大全,最全的汇编指令
在实际编程中,汇编语言通常用于编写性能敏感的代码段,或解决特定的硬件控制问题。然而,由于其低级特性,学习和使用汇编语言需要较高的学习曲线和实践经验。
汇编语言简单求平均值程序
### 汇编语言简单求平均值程序#### 背景介绍汇编语言是一种低级编程语言,它直接对应计算机的机器指令集。
汇编语言求平方根的问题
而"CSDN社区.csdn_files"可能是一个链接到CSDN论坛上讨论该问题的页面,那里可能有更多关于80386汇编语言求平方根的具体实现和讨论。


