当前位置:首页 > 微机原理作业及参考答案
CMP AX,X JL N_HIGH MOV BX,X SUB BX,Y JO OVERFLOW JNS NEXT NEG BX
NEXT: MOV RESULT,BX
N_HIGH: …… OVERFLOW: ……
第四章 汇编语言程序设计(P195)
4-2 内存分配和预置数据
VAR1 DB 12,-12H,3 DUP(0,0FFH) VAR2 DB 100 DUP(0,2 DUP(1,2),0,3) VAR3 DB ‘WELCOME TO’
VAR4 DW VAR3+6 ;取其偏移量给VAR4
VAR5 DD VAR3 ;取其偏移量和段基址给VAR5 4-3
(1)DATA1 DB 86H,27H,23H,00H,24H,1AH (2)DATA2 DW 0B430H,1062H
(3)DATA3 DB 4DUP(20H),20,0,6DUP(1,2)
4-4 (1)2 (2)2 (3)1 (4)10 4-5
(1)VAR1的偏移量是0030H;VAR2的偏移量是003AH (2)CNT=0010H
(3)VAR2+2单元的内容是02H
4-10 DATA X DB Y DB Z DB
SEGMENT 4 DUP(?) 4 DUP(?)
4 DUP(?),0
;定义X,Y,Z为字节变量
DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,WORD PTR X[0] ADD AX,WORD PTR Y[0] ;X,Y低16位相加 MOV WORD PTR Z[0],AX ;结果存入Z的低16位 MOV AX,WORD PTR X[2] ADC AX,WORD PTR Y[2] ;X,Y高16位相加 MOV WORD PTR Z[2],AX ;结果存入Z的高16位 JNC OK MOV AL,1 MOV Z+4,AL ;保存进位 OK: MOV AH,4CH INT 21H CODE ENDS END START
4-11
DATA SEGMENT X DB 4 DUP(?) Y DB 4 DUP(?) Z DB 4 DUP(?) ;定义X,Y,Z为字节变量 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DL,0
MOV AX,WORD PTR X
SUB AX,WORD PTR Y ;X,Y低16位相减
MOV WORD PTR Z,AX ;结果存入Z的低16位 MOV AX,WORD PTR X[2]
SBB AX,WORD PTR Y[2] ;X,Y高16位相加
MOV WORD PTR Z[2],AX ;结果存入Z的高16位 JNO OK
MOV DL,-1 ;溢出 OK: MOV AH,4CH INT 21H CODE ENDS
END START
4-12 (1)
DATA SEGMENT DB 100 DUP(?)
MESG DB 'ERROR INPUT!$' DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AH,01H INT 21H ;从键盘输入一个字符,该字符ASCII码送入AL CMP AL,41H JB ERROR CMP AL,4AH JA ERROR CMP AL,41H JE P0 ;判断输入字符是为'A',则跳转到P0 ... CMP AL,4AH JE P9 ;判断输入字符是为'J',则跳转到P9 P0: ... RET ... P9: ... RET
ERROR: MOV DX,OFFSET MESG MOV AH,09H INT 21H ;输入字符非'A'~'J'则输出错误信息 RET
START ENDP CODE ENDS END START (2)
DATA SEGMENT
BASE DW P0,P1,P2,P3,P4,P5,P6,P7,P8,P9 MESG DB 'ERROR INPUT!$' DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?)
STACK ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV BX,0 ;BX为跳转表BASE内寻址编号,清零 MOV AH,01H INT 21H ;从键盘输入字符命令 CMP AL,41H JB ERROR CMP AL,4AH JA ERROR ;输入字符非'A'~'J'则跳转到ERROR MOV BL,AL SUB BL,41H ;得编号 SHL BX,1 ;表内偏移量=编号*2 JMP BASE[BX];查跳转表跳转到相应的子程序 ERROR: MOV DX,OFFSET MESG MOV AH,09H INT 21H ;输出错误信息 RET P0: ... RET ... P9: ... RET
START ENDP CODE ENDS END START
4-13
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV GOOD,0 MOV PASS,0 MOV BAD,0
XOR BX,BX ;bx存放全年级统计总成绩 XOR SI,SI
共分享92篇相关文档