汇编语言与接口技术作业

第四章 80x86汇编语言程序设计

1.伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?

答:区别:伪指令语句是能执行的语句,硬指令语句是CPU可以执行的语句。

伪指令语句主要作用是为汇编程序提供解释说明,它仅仅是在汇编过程中告诉汇编程序如何进行汇编。

7.假设MYWORD是一个字变量,MYBYTE1和MYBYTE2是两个字节变量,指出下列语句中的错误及其原因。

  • 1.MOV BYTE PTR[BX], 1000
答:数据类型不匹配,目的地址单元是字节单元,1000大于255。无法存放。
  • 2.MOV BX, OFFSET[SI]
答:OFFSET后只能跟标识符。
  • 3.CMP MYBYTE1, MYBYTE2
答:CMP的两个操作数不能同时在存储器中。
  • 4.MOV AL, MYBYTE1+MYBYTE2
答:运算符只能对常数进行操作,不能对变量进行操作。
  • 5.SUB AL, MYWORD
答:数据类型不匹配,AL是8位的,MYWORD是16位变量。
  • 6.JNZ MYWORD
答:MYWORD是变量,其指的单元中存放的是操作数,不能用做跳转入口。

19.按下面要求写一个简化段定义格式的源程序

  • 1.定义常量NUM,其值为5;数据段中定义字数组变量DATALIST,它的头5个字单元中依次存放-1,0,2,5和4,最后一个单元初值不定。
  • 2.代码段中的程序将DATALIST中头NUM个数的累加和存入DATALIST的最后1个字单元中。
.model small
.stack
.data
    num equ 5
    datalist dw -1,0,2,5,4,?
.code
.startup
    mov bx, offset datalist
    mov CX, num
    xor ax, ax
again:
    add ax, [bx]
    inc bx
    inc bx
    loop again

27.假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断。

(1) 若DX>DI,转到ABOVE执行
(2) 若AX>SI,转到GREATER执行。
(3) 若CX=0,转到ZERO执行
(4) 若AX-SI产生溢出,转到OVERFLOW执行。
(5) 若SI≤AX,转到LESS_EQ执行。
(6) 若DI≤DX,转到BELOW_EQ执行。
答:
(1) CMP DX,DI JA ABOVE
(2) CMP AX,SI JG GREATER
(3) CMP CX,0 JE ZERO
(4) CMP AX,SI
JO OVERFLOW
(5) CMP AX,SI
JGE LESS_EQ
(6) CMP DX,DI
JAE BELOW_EQ

33.已知用于LED数码管显示的代码表为

LEDTABLE DB 0C0H,0FGH,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0C1 H,86H,8EH
它依次表示09AF这16个数码的显示代码。编写一个程序实现将LEDNUM中的一个数字(09,AF)转换成对应的LED显示代码

.model small
.stack 256
.data
    LEDTABLE DB 0c0h,0a4h,0b0h,99h,92h,82h.0f8h
    DB 80h,90h,88h,83h,0c6h,0clh,86h,8eh
    LEDNUM DB?
.code
.startup
    mov bx,offset LEDTABLE
    mov al,LEDNUM
    xlat                                          ;al 中存在对应的LED显尿代码
    exit 0

第五章 存储器技术

7.简要说明Cache的地址映射方式。Cache的替换算法主要有哪些?为何要进行替换?

你可能感兴趣的:(汇编)