type指令,是取变量类型 byte-1, word-2, dword-4
res的定义是db,为byte,所以是1, table的定义是dw - word,所以是2, dword (dd),则为4
length指令,是取变量定义中dup的数值,所以3的答案是100
size指令,是求length 和type的乘积,所以4是200
而5,array的定义中,没有dup,所以结果是1
微机原理主要讲微机的组成、各功能器件的作用及操作控制方式(包括时序)、监控程序等;汇编语言主要讲数的进制、各种进制的相互转化、数在计算机中的表示方式、机器指令码及其简记的汇编码、各种汇编语言指令(包括伪指令)及其功能介绍、汇编语言编程等。
微机原理和汇编语言是密不可分的,常常是相互穿插。
操作如下:
按下图中表格的数据为例。A1到A8单元格为排名的数据;B1到B8单元格显示名次。
1;光标点下B1单元格,再输入公式:=RANK(A1,A$1:A$8)
2;按回车键,B1单元格即显示名次的数字;
3;光标点下B1单元格,然后,移到单元格右下角,光标呈黑色+字;
4;然后,点住不放手,下拉到B8单元格;
5;放开鼠标,B3到B8单元格即显示对应的名次。
以上是按数据由高到低排名,若是按数据由低到高排名的话,操作同上,只是公式改为=RANK(A1,A$1:A$8,1)
data segment
buf1 db 1,3,4,5,7,9
n1 equ $-buf1
buf2 db 2,4,6,8,10,12
n2 equ $-buf2
buf3 db n1+n2 dup(0)
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
lea si, buf1
lea di, buf2
lea bx, buf3
mov cx, 0 ;ch->index for buf1
;cl->index for buf2
$1:
cmp ch, n1
jz $8
cmp cl, n2
jz $9
mov al,[si]
cmp al,[di]
ja $2
jb $3
mov [bx], al
inc bx
inc si
inc di
inc ch
inc cl
jmp $1
$2:
mov al, [di]
mov [bx],al
inc cl
inc bx
inc di
jmp $1
$3:
mov [bx], al
inc ch
inc bx
inc si
jmp $1
$8:
cmp cl, n2
jz $10
mov al,[di]
mov [bx],al
inc bx
inc di
inc cl
jmp $8
$9:
cmp ch,n1
jz $10
mov al,[si]
mov [bx],al
inc si
inc bx
inc ch
jmp $9
$10:
mov ah,4ch
int 21h
code ends
end start
用C51编程,这是C语言,不是汇编语言的,根本不是一回事的。而微机原理中讲的编程通常是用汇编语言,而汇编语言是不通用的,针对不同的单片机或CPU,语句是不同的,微机原理用的汇编语句是针对8086的或80286,80386等,而51单片机的汇编语句是针对51系列单片机的。
微机原理讲80x86 CPU的汇编语言,单片机讲某种单片机(通常是8051)的汇编语言,两种CPU的体系结构、应用场合完全不同
80x86用在PC机上,通用寄存器多些,寻址方式、寻址范围多些,CPU内部复杂些,先进结构(流水线、超标量、分支预测)多些,对操作系统的支持(段页式寻址、进程内存保护)多些
8051比80x86简单多了,但是对工业场合的支持多些,比如CPU内部直接集成了串口,总线上时序也比80x86简单、干净
这是一段86汇编程序,其功能是通过系统调用从键盘获取一个输入字符,再通过系统调用将该字符输出显示。程序注释如下:
;
MOV AX, 2000H ; 16进制2000送AX寄存器
MOV DS,AX ; AX寄存器内容送DS寄存器
; 以上两指令将数据段寄存器DS设为2000H
;
MOV AH,1 ; 系统功能号 1 送AH寄存器
INT 21H ; 启动系统调用
; 以上两指令实现读键盘,输入值在AL寄存器
;
MOV [100H],AL ; 输入值存入DS段100H位置
MOⅤ DL,[100H] ; DS段100H单元内容送DL
; 以上两指令将要输出显示字符送DL寄存器。
;
MOV AH,2 ; 系统功能号 2 送AH寄存器
INT 21H ; 启动系统调用
; 以上两指令将DL寄存器内容输出显示。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)