第四章汇编语言源程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章汇编语言源程序设计

1.画出数据段汇编后相应存储单元中的内容并标出存储单元的逻辑地址。

DA TA SEGMENT

ORG 0100H

ABC0 EQU 78H

ABC DB 09H,-2,45H, 2 DUP(01H,?),‘AB’

ABC1 DW -2, 34H+ABC0,$

ABC2 DD 12H

ABC3 DW ABC

DA TA ENDS

解:

DS:0100H ABC→

DS:0101H

DS:0102H

DS:0103H

DS:0104H

DS:0105H

DS:0106H

DS:0107H

DS:0108H

DS:0109H ABC1→

DS:010AH

DS:010BH

DS:010CH

DS:010DH

DS:010EH

DS:010FH ABC2→

DS:0110H

DS:0111H

DS:0112H

DS:0113H ABC3→

DS:0114H

2.设程序中的数据定义如下:

PARTNO DW ?

PNAME DB 16 DUP(?)

COUNT DD ?

PLENTH EQU $-PARTNO

问PLENTH的值为多少?它的含义是什么?

解:PLENTH的值为22(16H)。表示当前位置与PARTNO之间有22个字节空间。3.假设程序中的数据定义如下:

LNAME DB 30 DUP(?)

ADDRESS DB 30 DUP(?)

CITY DB 15 DUP(?)

CODE_LIST DB 1,7,8,3,2

(1)用一条MOV指令将LNAME的偏移地址放入AX;

(2)用一条指令将CODE_LIST的头两个字节的内容放入SI:

(3)写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。解:(1)MOV AX,OFFSET LNAME

(2)MOV SI,WORD CODE_LIST

(3)CODE_LENGTH EQU $-CODE_LIST

4.执行下列程序段后,AX、BX的内容各是什么?

MOV AX,0001H

MOV BX,8000H

NEG AX

MOV CX,4

AA:SHL AX,1

RCL BX,1

LOOP AA

HLT

解:AX=0FFF0H,BX=000FH

5.阅读以下程序,回答问题

DA TA SEGMENT

ABC DB 90H,12H,43H,56H,04H,01H

COUNT EQU $-ABC

RESULT DW ?

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:PUSH DS

MOV AX,DA TA

MOV DS,AX

XOR AX,AX

MOV CX,COUNT

LEA SI,ABC

LEA DI,RESULT

AA:MOV BL,[SI]

INC SI

CMP BL,80H

JC NEXT1

NEG BL

NEXT1:ADD AL,BL

ADC AH,00H

LOOP AA

MOV [DI],AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

(1)程序完成什么功能?

(2)程序中NEG BL指令的作用是什么?

(3)程序执行结束后RESULT字单元的内容是什么?

(4)能否用MOV SI,OFFSET ABC代替程序中LEA SI,ABC指令?(5)汇编结束后符号COUNT的值是什么?

解:(1)程序完成求一组有符号字节数的绝对值之和。

(2)程序中NEG BL指令的作用是求负数的绝对值。

(3)程序执行结束后RESULT字单元的内容是0120H。

(4)能。

(5)汇编结束后符号COUNT的值是06H。

6.阅读以下程序,回答问题

DSEG SEGMENT

ARRAY DB 34H,56H,23H,70H,96H

COUNT EQU $-ARRAY

DSEG ENDS

SSEG SEGMENT PARA STACK ‘STACK’

DB 256 DUP(0)

SSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG,DS:DSEG,SS:SSEG

START:MOV AX,DSEG

MOV DS,AX

MOV SI,OFFSET ARRAY

MOV CX,COUNT

CLD

NEXT: LODSB

MOV BL,AL

AND AL,0F0H

PUSH CX

MOV CL,4

SHR AL,CL

OR AL,30H

CALL DISP

MOV AL,BL

AND AL,0FH

OR AL,30H

CALL DISP

DEC CX

JCXZ DONE

MOV AL,2CH ;逗号的ASCII码为2CH

相关文档
最新文档