汇编语言北大上机考试基本功训练(一)

题目:


输入两个单位十进制数(0-7之间),要求:
1)用十六进制输出两数的和
2)用四位二进制输出两数的差,要求差必须大于等于0
3)用两位十进制输出两数的积

分析:


考核知识点:


单个十进制数字的输入
基本数学运算(加法/减法和乘法/除法)
数字的十六进制显示
数字的二进制显示
数字的十进制显示

考点提要:


单个十进制数字的输入


使用01H号Dos功能调用,将用户输入的数据接收在AL中
代码如下:


  MOV AH, 01H
  INT 21H

基本数学运算(加法/减法和乘法)


单个的无符号数的加法/减法和乘法,只需要使用ADD, SUB, MUL即可

数字的十六进制显示


数字在计算机内部是以二进制形式来存储的,二进制与十六进制之间存在这简单的4位4位的对照关系:


  二进制  十六进制
  0000  0
  0001  1
  0010  2
  0011  3
  0100  4
  0101  5
  0110  6
  0111  7
  1000  8
  1001  9
  1010  A
  1011  B
  1100  C
  1101  D
  1110  E
  1111  F
所以,在以十六进制显示时,只要按照这个对照关系将存储在机器内的二进制数以四位为一组进行翻译即可

数字的二进制显示


数字在计算机内部是以二进制形式来存储的,所以在以二进制方式显示时最简单直接的方法是什么都不必做,只需要一位一位的将它显示出来即可数字的十进制显示 要将存储在计算机内部的二进制数字以十进制形式来显示,可以有多种方法,其中的一种比较好理解的做法称作:除权显商法.这种方法的核心思想是将要显示的数除以它的最高为的权,显示商,将余数再做同样的处理...最终余数变为一位就除以1,显示最后一个商(其实也就是余数本身了).这个做法有一个弊端,就是在操作之前要知道这个二进制数的大小,如果不知道大小就无法找到其最高权位,只能从可能的最大权位开始除起,在遇到第一个非零商之前的所有商都应该抛弃.但是本例要求必须以两位十进制来显示,所以对于第一个零也要显示.

源代码如下(见1.asm):


DATA SEGMENT
P1 DB 'INPUT THE 1ST NUM(0-7):$'
P2 DB 'INPUT THE 2ST NUM(0-7):$'
ERR DB 'BAD FROMAT! INPUT AGAIN:$'
PHE DB 'HE(IN H FROMAT):$'
PCHA DB 'CHA(IN B FROMAT):$'
PJI DB 'JI(IN D FROMAT):$'
NUMMIN DB ?
NUMMAX DB ?
HE DB ?
CHA DB ?
JI DB ?
NOZERO DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX, OFFSET P1
CALL PROMPT
LEA DI,NUMMIN
CALL INPUT
LEA DX,P2
CALL PROMPT
LEA DI,NUMMAX
CALL INPUT
CALL SORT
CALL MYADD
CALL MYSUB
CALL MYMUL
CALL DISPHE
CALL DISPCHA
CALL DISPJI
MOV AH,4CH
INT 21H
;-----------------------------
MYDIV PROC
PUSH CX
XOR AX, AX
MOV AL, BL
DIV CL
MOV BL, AH
ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
POP CX
RET
MYDIV ENDP
;-----------------------------

;-----------------------------
DISPJI PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX, OFFSET PJI
CALL PROMPT
MOV BL, JI
MOV CL, 10
CALL MYDIV
MOV CL, 1
CALL MYDIV
POP DX
POP CX
POP BX
POP AX
RET
DISPJI ENDP
;-----------------------------

;-----------------------------
DISPCHA PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX, OFFSET PCHA
CALL PROMPT
MOV BL, CHA
MOV CL, 4
SHL BL, CL
MOV CX, 4
NEXTBIT:
ROL BL, 1
MOV BH, BL
AND BH, 01B
JE DISP0
DISP1:
MOV DL, '1'
MOV AH, 02H
INT 21H
JMP DISPCHACONTINUE
DISP0:
MOV DL, '0'
MOV AH, 02H
INT 21H
DISPCHACONTINUE:
LOOP NEXTBIT
MOV DL, 'B'
MOV AH, 02H
INT 21H
POP DX
POP CX
POP BX
POP AX
RET
DISPCHA ENDP
;-------------------------------

;-----------------------------
DISPHE PROC
PUSH AX
PUSH CX
PUSH DX
MOV DX, OFFSET PHE
CALL PROMPT
MOV BL, HE
MOV CH, 2
MOV NOZERO, 0
NEXT4BITS:
MOV CL, 4
ROL BL, CL
MOV AL, BL
AND  AL, 0FH
CMP AL, 0AH
JB DISPHEX
ADD AL, 07H
DISPHEX:
CMP AL, 0
JNE DISP
CMP NOZERO, 0
JNE DISP
JMP CONTINUE
DISP:
MOV NOZERO, 1
ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
CONTINUE:
SUB CH, 1
JNE NEXT4BITS
CMP NOZERO, 0
JNE DISPHEXEXIT
MOV DL, 30H
MOV AH, 02H
INT 21
DISPHEXEXIT:
MOV DL, 'H'
MOV AH, 02H
INT 21H
POP DX
POP CX
POP AX
RET
DISPHE ENDP
;------------------------------


;-----------------------------
MYMUL PROC
PUSH AX
XOR AX, AX
MOV AL, NUMMIN
MUL NUMMAX
MOV JI, AL
POP AX
RET
MYMUL ENDP
;-----------------------------

;-----------------------------
MYSUB PROC
PUSH AX
XOR AX, AX
MOV AL, NUMMAX
SUB AL, NUMMIN
MOV CHA, AL
POP AX
RET
MYSUB ENDP
;-----------------------------

;-----------------------------
MYADD PROC
PUSH AX
PUSH DX
MOV AL, NUMMIN
ADD  AL, NUMMAX
MOV HE, AL
POP DX
POP AX
RET
MYADD ENDP
;-----------------------------


;-----------------------------
SORT PROC
PUSH AX
MOV AL, NUMMIN
CMP AL, NUMMAX
JBE SORTEXIT
XCHG AL, NUMMAX
XCHG AL, NUMMIN
SORTEXIT:
POP AX
RET
SORT ENDP
;------------------------------


;------------------------------
INPUT PROC
PUSH AX
PUSH DX
INPUTSTART:
MOV AH, 01H
INT 21H
CMP AL, 30H
JB INPUTERR
CMP AL, 37H
JA INPUTERR
SUB AL, 30H
MOV [DI], AL
JMP INPUTEXIT
INPUTERR:
CALL CRLF
MOV DX, OFFSET ERR
MOV AH, 09H
INT 21H
CALL CRLF
JMP INPUTSTART
INPUTEXIT:
POP DX
POP AX
RET
INPUT ENDP
;------------------------------

;------------------------------
PROMPT PROC
PUSH AX
CALL CRLF
MOV AH, 09H
INT 21H
CALL CRLF
POP AX
RET
PROMPT ENDP
;------------------------------

;------------------------------
CRLF PROC
PUSH DX
PUSH AX
MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H
POP AX
POP DX
RET
CRLF ENDP
;------------------------------

CODE ENDS
END START



----------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
实验四是关于汇编语言程序的上机过程。汇编语言是一种低级语言,与器指令一一对应。在上机过程中,我们需要完成以下几个步骤: 首先,需要打开汇编语言编译器软件,如MASM或TASM等。这些软件能够将汇编语言转化为器指令,实现程序的执行。 接下来,我们需要创建一个新的汇编语言程序文件。可以使用任何文本编辑器,如记事本,编辑器打开并编辑文件。在文件中,我们需要写入汇编语言指令,根据程序的需求来编写。 编写汇编语言程序时,需要确定好程序的功能和流程。在代码中,需要定义变量、数据块,还要使用一些控制结构和算术运算。 在编写完程序后,我们需要将汇编语言程序保存为.asm扩展名的文件。 然后,我们需要使用汇编器软件将程序进行编译。编译的目的是将汇编语言转换为器指令,以便计算能够理解和执行。编译成功后,会生成.obj或.obj文件。 最后,我们需要使用链接器软件将编译后的文件与所需的库文件进行链接,生成最终可执行文件。链接的过程会将不同的模块进行整合,确保程序的各个部分能够正确执行。 完成上述步骤后,我们就可以运行汇编语言程序了。运行程序时,计算会逐条执行汇编语言指令,实现程序的功能。 总结起来,实验四的汇编语言程序上机过程包括打开汇编语言编译器,创建程序文件,编写程序代码,保存文件,进行编译、链接,最后运行程序。这些步骤需要按照顺序进行,才能成功执行汇编语言程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值