这三个程序互不冲突,三合一放在一个程序里面了。
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
Start: push cs
pop ds
push cs
pop es
jmp subject_1
; -----------------------------------------
; 1.在以block为首地址的字节单元中,存放了06计算(1)班的学生考试成绩,试编制一程序,利用学生的序号来查表得到该学生的成绩,设学生的序号在number单元,查表结果存入RESULT单元中
block db 56,69,84,82,73,88,99,63,100,80,70,85,100,90,73,43,60,63,72,88 ; 成绩单
number db 18 ;学生序号
RESULT db ? ;number号学生成绩
subject_1: lea bx,block
mov al,number
xlat ;查表,取得对应序号的学生成绩
mov RESULT,al ;保存成绩
jmp subject_2
; -----------------------------------------
; 2.编一程序段将BUF字节单元中的数拆成高低四位,并且将分离出的高四位和低四位分别放于BUF+1和BUF+2字节单元的低四位上
BUF db 9ah,?,?
subject_2: mov al,BUF
xor ah,ah
mov cx,4
shl ax,cl
shr al,cl
mov BUF[1],ah
mov BUF[2],al
jmp subject_3
; -----------------------------------------
; 3.编制一子程序,将AL中一位十六进制数转换为对应的ASCII码并用2号DOS功能显示出来,输入参数:补转换的十六进制数已在AL中
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10?
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
subject_3: mov al,8
call AL_ASCII
mov dl,al
mov ah,2
int 21h
; -----------------------------------------
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
温馨提示:答案为网友推荐,仅供参考