IBMPC汇编程序设计第章
IBM-PC汇编语言程序设计(第一章)
例 2. C = a + b
mov a,1 mov b,2 a db ? mov al,a b db ? add al,b c db ? mov c,al string db 'c=$' lea dx,string mov ah,09 data ends 汇编后的目 int 21h 标文件只有 add c,30h code segment mov dl,c 208字节 main proc far mov ah,2 assume cs:code, ds:data, int 21h es:data mov dl,0ah start: int 21h push ds mov dl,0dh sub ax,ax int 21h push ax ret mov ax,data main endp mov ds,ax code ends mov es,ax end start
编程实现 c =a+b,并在屏幕上显示出结果。
例1
#include "stdafx.h" #include "stdio.h" int main(int argc, char* argv[]) { int a,b,c; a=1; 编译后的目标文 b=2; 件达到3.59KB c=a+b; printf(“c=%d\n",c); return 0; }
整数部分:除N取余,商零为止,结果先低后高 16 125 16 7 0 取余 13 低位D 7 高位7 故: 125D = 7DH
商为 0
小数部分:乘N取整,到零为止,结果先高后低 取整 0. 125 ×16 = 2. 0 2
小数为 0 故: 0. 125D = 0. 2H
将整数部分和小数部分结合,125. 125D =7D. 2H
《IBM-PC汇编语言程序设计》(第2版)第3章习题解答及答案
第3章习题答案3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址;答案:无。
如:MOV AX,5(2)直接寻址;答案:7237H 如:MOV AX,[7237H](3)使用BX的寄存器寻址;答案:无。
因不涉及内存如:MOV AX,BX(4)使用BX的间接寻址;答案:637DH 如:MOV AX,[BX](5)使用BX的寄存器相对寻址答案:D5B4H 如:MOV AX,[BX+ 7237H](6)基址变址寻址答案:8E18H 如:MOV AX,[BX][SI](7)相对基址变址寻址;答案:无效,溢出如:MOV AX,[BX][SI] + 7237H 3.2 试根据以下要求,写出相应的汇编语言指令:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中;答案:ADD DX,BX(2) 用寄存器BX 和SI 的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中;答案:ADD AL,[BX][SI](3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回到存储器中;答案:ADD [BX+0B2H],CX (4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回到该存储单元中;答案:ADD WORD PTR [0524H],2A59H (5)把数0B5H与(AL)相加,并把结果送回AL中。
答案:ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:(1) 寄存器间接寻址答案:LEA BX, BLOCKADD BX, 5*2MOV DX, [BX](2) 寄存器相对寻址答案:LEA BX, BLOCKMOV DX, [BX+5*2](3) 基址变址寻址答案:LEA BX, BLOCKMOV SI,5*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56, (20103)=78H,(21200)=2AH,(21201)=4CH, (21202)=B7H, (21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。
IBM-PC汇编语言程序设计课后习题答案
第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。
IBM-PC汇编语言程序设计(第二版)答案1-8章
///第一章. 习题1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001b=171h(2) 10000=10 0111 0001 0000b=2710h(3) 4095=1111 1111 1111b=fffh(4) 32767=111 1111 1111 1111b=7fffh1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101b=2dh=45(2) 1000 0000b=80h=128(3) 1111 1111 1111 1111b=ffffh=65535(4) 1111 1111b=ffh=2551.3 将下列十六进制数转换为二进制数和十进制数:(1) fa (2) 5b (3) fffe (4) 1234答:(1) fah=1111 1010b=250(2) 5bh=101 1011b=91(3) fffeh=1111 1111 1111 1110b=65534(4) 1234h=1 0010 0011 0100b=46601.4 完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3a+b7 (2) 1234+af (3) abcd-fe (4) 7ab×6f答:(1) 3a+b7h=f1h=241(2) 1234+afh=12e3h=4835(3) abcd-feh=aacfh=43727(4) 7ab×6fh=35325h=2178931.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011b+0100 1100b=1111 0111b=0f7h;cf=0;of=0(2) 85+(-76)=0101 0101b+1011 0100b=0000 1001b=09h;cf=1;of=0(3) 85-76=0101 0101b-0100 1100b=0101 0101b+1011 0100b=0000 1001b=09h;cf=0;of=0(4) 85-(-76)=0101 0101b-1011 0100b=0101 0101b+0100 1100b=10100001b=0a1h;cf=0;of=1(5) (-85)-76=1010 1011b-0100 1100b=1010 1011b+1011 0100b=0101 1111b=5fh;cf=0;of=1(6) -85-(-76)=1010 1011b-1011 0100b=1010 1011b+0100 1100b=11110111b=0f7h;cf=0;of=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) d8 (2) ff答:(1) d8h表示的带符号数为-40,d8h表示的无符号数为216;(2) ffh表示的带符号数为-1,ffh表示的无符号数为255。
汇编语言第3章 指令系统和寻址方式
5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)
IBM-PC汇编语言程序设计第1章 基础知识
第1章 基础知识
1.1.3 高级语言
汇编语言虽然较机器语言直观,但仍然烦 汇编语言虽然较机器语言直观, 琐难懂。于是人们研制出了高级程序设计语言。 琐难懂。于是人们研制出了高级程序设计语言。 高级程序设计语言接近于人类自然语言的语法习 惯,与计算机硬件无关,易被用户掌握和使用。 与计算机硬件无关,易被用户掌握和使用。 目前广泛应用的高级语言有多种, 目前广泛应用的高级语言有多种,如 BASIC、FORTRAN、PASCAL、C、C++、 、 、 、 、 、 JAVA等等。 等等。 等等
返回本节
第1章 基础知识
1.2 进位记数制及其转换
1.2.1 1.2.2 1.2.3 二进制数 二进制数 二进制数和十进制数之间的转换 二进制数和十进制数之间的转换 十六进制及与二进制、 十六进制及与二进制、十进制数之
间的转换
返回本章首页
第1章 基础知识
预 备 知 识
存储容量 1K = 1024 = 210 (Kilo) 1M = 1024K = 220 (Mega) 1G = 1024M = 230 (Giga) 1个二进制位:bit 2个字节: (比特) 8个二进制位:Byte (字节) 1Byte = 8bit Word (字) 1Word = 2Byte = 16bit
(a6=1) (a5=1) (a4=1) (a3=0)
5- 22=5-4=1
(a2=1) (a1=0)
1 -20=1-1=0
(a0=1)
第1章 基础知识
(2) 除法 把要转换的十进数的整数部分不断除以2, 把要转换的十进数的整数部分不断除以 ,并记下 余数,直到商为0为止 为止。 余数,直到商为 为止。 N=117D 【例1.2.2】 】 117/2=58 (a0=1) 58/2=29 (a1=0) 29/2=14 (a2=1) 14/2=7 (a3=0) 7/2=3 (a4=1) 3/2=1 (a5=1) 1/2=0 (a6=1)
IBM-PC汇编语言程序设计第二版第8章PPT教案
jne sound
……
设备控制寄存器( 61h )
1
0
1/0 0
控制其它外部设备
与 门
第4页/共31页
2号定时器门控
放大器
5
例 : Sound 程 序 2
.model tiny .code .startup call speaker_on mov ah, 1 int 21h call speaker_off .exit 0
JZ
DEV2
CALL PROC1
FAR PTR
DEV2: IN
AL, STAT2
TEST STAT2_BIT
JZ
AL, DEV3
优:程序安排或修改 设备的优先次序
PROC2 DEV3:
CALL IN
FAR PTR AL, STAT3
缺:查询等待浪费 CPU大量有效时间
TEST AL,
STAT3_BIT
MOV AX, OFFSET INTHAND
MOV ES: WORD PTR[BX], AX
;偏移地址(N*4)
MOV AX, SEG
INTHAND
MOV ES: WORD PTR[BX+2],AX
;段地址
(N*4+2)
……
INTHAND: …… IRET
内中断 : (软中断) INT 指令 / CPU 错(除法错、溢出)/ 为调试程序设置的中断
第7页/共31页
8
80x86 中断源:
非屏蔽中断请 求
2 NMI
CPU
中断逻辑
n INT n
INTO
40
除法 错
8259 IR0 08 系统定时器
IBM—PC(80x86)汇编语言与接口技术-第2章 80x86计算机组织
• 80386是1985年研制出的一个32位微处理器, 内部及外部数据总线均为32位,地址线也为32 位,因此它可处理4G(232)字节的物理存储 空间。
• 1989年Intel公司又研制出新一代的微处理器 80486,80486芯片内除了有一个与80386相同 结构的主处理器外,还集成了一个浮点处理部 件FPU以及一个8K字节的高速缓冲存储器 (cache),使80486的计算速度和总体性能比 80386有了明显的提高。
• Intel公司在1982年推出了80286微处理器,它仍 然是16位结构。80286的内部及外部数据总线都 是16位的,但它的地址线是24位的,可寻址16M 字节的存储空间。
80286有两种工作方式,即实模式和保护模式: 实模式与8086工作方式相同,但速度比8086快。
保护模式除了仍具有16M字节的存储器物理地址空 间外,她还能为每个任务提供1G字节的虚拟存储 器地址空间。保护方式把操作系统及各任务所分配 到的地址空间隔离开,避免程序之间的相互干扰, 保证系统在多任务环境下正常工作。
• 8086是1978年Intel公司推出的16位微处理器。
(1)8086有16位数据总线,处理器与外部传送数据 时,一次可传送16位二进制数。
(2)8086有20位地址总线,寻址空间提高到1M字节。
(3)8086采用了流水线技术,可以实现处理器的内 部操作与存储器或I/O接口之间的数据传送操作重叠 进行,从而提高了处理器的性能。
2.2 基于微处理器的 计算机系统的构成
硬件:
中央处理机 CPU
总线控制 逻辑 系 统 总 线
存储器
接口
...
接口
大容量 存储器
...
I/O设备
I/O子系统
IBM-PC汇编语言程序设计第二版第2章
小段:每16个字节为一小段,共有64K个小段
小段的首地址 00000 H ~ 0000F H 00010 H ~ 0001F H 00020 H ~ 0002F H … FFFF0 H ~ FFFFF H
段起始地址:小段首地址 段的大小: 64K 范围内的任意字节
CS 0200H DS 0400H SS 0480H
8086/8088
AF PF CF
80286
AF PF CF
80386
AF PF CF
80486
AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF
Pentium
ID VIP VIF AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF
第2章 80x86计算机组织
• 计算机系统 • 存储器 • 中央处理机 • 外部设备
1. 计算机系统
硬件:
中央处理机 CPU
总线控制 逻辑 线系 统 总
存储器
接口
...
接口
大容量 存储器
...
I/O设备
I/O子系统
软件:系统软件 用户软件
2. 存储器
存储单元的地址和内容:
存储器以字节(8 bit)为编程单位 每个字节单元都有唯一的地址编码 地址用无符号整数来表示(编程用十六进制表示) 一个字要占用相继的两个字节 低位字节存入低地址,高位字节存入高地址 字单元地址用它的低地址来表示 机器以偶地址访问(读 / 写)存储器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
条件码标志:
IBM-PC汇编语言程序设计答案
第一章.习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(著)答案
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)答案第三章答案1-221.(1)立即寻址没有(2)直接寻址 7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址 637DH(5)使用BX的寄存器相对寻址 0D5F0H(6) 基址变址寻址 8E18H(7)相对基址变址 004FH2.根据下列要求,写出相应的汇编指令。
(1)ADD DX,BX(2) ADD AL,[BX][SI](3) ADD [BX][0B2H], CX(4) MOV AX,2A59H ADD [0524H] ,AX(5) ADD AL ,0B5H3.(1)寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2)寄存器相对寻址MOV SI,OAHMOV DX,[BLOCK][SI](3)基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]4. 现有(DS)=2000H, (BX)=0100H, (SI)=0002H,(20100)=12H, (20101)=34H,(20102)=56H, (20103)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。
(1)MOV AX,1200H 1200H(2) MOV AX,BX 0100H(3) MOV AX,[1200] 4C2AH 注意,是字单元!!(4)MOV AX,[BX] 同上(5)MOV 1100[BX] 4C2AH(6) MOV AX,[BX][SI] 7856H(7) MOV AX,1100[BX][SI] 65B7H5.(1) 7CD9H (2) 1200H (3) 6319H6. MOV BX,2000HLES DI ,[BX]MOV AX, ES:DI7.转向地址OBJ的值分别为:(1)064DH (2)0691H (3)05E0H注意有符号数的符号位8.(1) MOV AX,0ABH 立即数寻址无物理地址(2) MOV AX,BX 寄存器寻址同上(3) MOV AX,[100] 直接寻址 20100H(4) MOV AX,VAL 直接寻址 20050H(5) MOV AX,[BX] 寄存器间接寻址 20100H(6) MOV AX,ES:[BX] 直接寻址 21100H(7) MOV AX,[BP] 寄存器间接寻址 20010H(8)MOV AX,[SI] 同上 200A0H(9) MOV AX,[BX+10] 寄存器相对寻址 20110H(10)MOV AX,VAL[BX] 同上 20150H(11) MOV AX,[BX][SI] 基址变址寻址 201A0H(12) MOV AX,VAL[BX][SI] 相对基相变址寻址 201F0H9.(1)的指令: MOV AX, [BX][0CH] MOV ZREO ,AX(2) 的指令: MOV AX,ARRAY[BX] MOV ZREO,AX10. MOV AX,TABLE 是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234HLEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H11. 执行完指令后,(AX)=1E00H12. LEA AX,CSTRINGMOV DL,AXMOV DH,[AX+6]13. 这参考课本P51--P5314.LES BX,[2000]MOV AX,ES:[BX]15.运算结果 SF,ZF,CF,OF各位的值(从左至右依次往下~)(1) 74D4H 0 0 0 0(2) A5C1H 1 0 0 1(3) 4240 H 0 0 1 0(4) 0000 H 0 1 1 016.接上表~(1) 5D14 0 0 0 0(2) A870 1 0 0 1(3) D870 1 0 0 0(4) 34E4 0 0 1 017.(1).MOV AX,Z ;把Z送到AXSUB AX,X ;Z-XADD AX,W ;W+(Z-X)MOV Z,AX ;结果保存在Z中(2). MOV AX,R ;R送到AX中ADD AX,9 ;R+9MOV BX,X ;X送到BX中ADD BX,6 ;X+6ADD AX,BX ;(R+9)+(X+6),结果保存在AX中MOV BX,W ; W送到BX中SUB BX,AX ; W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~~ MOV Z,BX ;最终结果送到Z中(3)MOV AX,W ;把W送到AXIMUL X ;W*X 注意:低十六位保存在AX里,高十六位保存在DX里MOV BX,Y ;把Y送到BX 里ADD BX,6 ;Y+6IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX里,余数保存在DX里MOV Z,AX ;把商送到Z中,MOV R,DX ;把余数送到R中(4)MOV AX,W ;把W送到AX中SUB AX,X ;W-XCWD ;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保;在DX中MOV BX,5 ;把5送到BX中IDIV BX ;(W-X)/5 被除数为32位,除数为16位商为16位IMUL Y ;上一步结果再乖以Y,积为32位MOV BX,2 ;把2送到BX中IMUL BX ;上一步乘法所得的积再乘以2,各为64位MOV Z,EAX ;把结果中低32位放入Z双字单元中MOV [Z+4],EDX ;把结果中高32位放入Z+4双字单元中18.指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值MOV AX,1234H 1234H 0 0 0MOV CL,4 1234H 0 0 0ROL AX,CL 2341H 1 0 0DEC AX 2340H 1 0 0MOV CX,4 2340H 1 0 0MUL CX 8918H 0 0 0INT 20H程序结束后,(AX)=8918H (DX)=0000H19.指令执行完后AX的内容执行完后CF ,SF,ZF和OF的值MOV AX,0 0 0010DEC AX FFFFH 0100ADD AX,7FFFH 7FFEH 0000ADD AX,2 8000H 0101NOT AX 7FFFH 0101SUB AX,0FFFFH 8000H 1101ADD AX,8000H 0000H 1011SUB AX,1 FFFFH 1101AND AX,58D1H 58D1H 0000SAL AX,1 B1A2H 0101SAR AX,1 D8D1H 0100NEG AX 272FH 1000ROR AX,1 9397H 100120.(1)MOV AX,DATAXADD DATAY,AX(2)MOV AX,DATAXADD DATAY,AXMOV AX,[DATAX+2]ADD [DATAY+2] ,AX(3)本組指令的作用是:BX <------[DATAX]+[DATAY]+[1](CF的值) 帶進位加法~ (4)MOV AX,DATAXMUL DATAY ;結果的高十六位保存在DX裏,低十六位保存在AX裏(5)MOV AX,DATAXMOV DX,[DATAX+2]MUL DWORD DATAY;;(6)MOV AX,DATAXDIV 17H ;結果商保存在AL中,余數在AH中(7)MOV AX,DATAXCDWDIV DATAY21.NEG DXNEG AXSBB DX,022.MOV AX,A ;把雙字長數的低字放到AX中MOV DX,[A+2] ;把雙字長數的高字放到DX中TEST DX,8000H ;測試雙字長數的符號JZ RIGHT ;如果是非負數,則直接保存NEG DX ;如果是負數,則求補NEG AXSBB DX,0RIGHT: MOV B ,AXMOV [B+2],DX23.每條指令單獨執行完後的結果依次為:(1) 9AH (2)61H (3)0FBH (4)1CH (5)0 (6)0E3H24.執行指令序列後,BX的內容為:0DAH25.(1)把53D乘以2的程序:MOV AX,35H ;53D=35HSHL AX ,1(2)把53除以2 的程序:MOV AX,35HSHR AX,1其他的同理~~26.這段程序完成的功能是:把DX:AX中的雙字數據左移4位(相當於乘以16D)27.各條指令單獨執行後,DX的值依次為:(1) 5CH (2)17H (3)05C8H (4)72H (5)2017H (6)0CDH (7)0172H (8)05CCH (9)0DCH28.該程序段執行完後,BX寄存器的內容是:C02DH29.(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:LEA SI,CONAME ;把CONAME中第一个字节的偏移地址送到SI中LEA DI,PRLINE ;把PRLINE中第一个字节的偏移地址送到DI中MOV CX,20 ;把重复次数放到CX里CLD ;让SI DI从低地址指向高地址(即从左到右传送)REP MOVSB ;传送(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:LEA SI ,CONAMELEA DI,PRLINEMOV CX,20STD ;和上面唯一不同的就是这次是从右到左,所以要从高地址指向低地址REP MOVSB(3)把CONAME中的第三和第四個字節裝入AX的程序實現:LEA SI ,[CONAME+3]LODSW(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:LEA DI ,[PRLINE+5]STOSW(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:LEA DI,CONAME ;把CONAME中第一個字符偏移地址放入DI中MOV CX,20 ;把重複次數放到CX中MOV AL,20H ;把空格符的ASCII值放入AL中CLD ;从低到高REPNE SCASB ;比較MOV BH,[DI-1]R ;把檢查到的空格符送到BH中30.MOV CX,12H ;把重複次數放到CX中。
关于《IBM-PC汇编语言程序设计》教学改进的几点探索
利 用 . 之 。 学 方 法 和 教 学 手 段 存 在 不 足 , 以 . 生 加 教 所 学 普 遍 发 映这 门 课 程 不 好 学 、 度 大 . 其 是 汇 编语 言 的 难 尤 编 程 成 为 了众 多 学 生 遇 到 的一 大 难 点 因 此 . 何 提 高 如
能够 根 据 实 际情 况 作 出相 应 的调 整 。必 须 要 了解 学 生 的学 习效 果 . 高学 生 的学 习主 动 性 和创 造 性 。 提 笔 者 的做 法 是 . 授完 一定 的 知识 外 . 讲 留一 定 量 的
作 者 简介 : 海 英 ( 9 4 , , 宁 辽 中 人 , 教 授 , 士 , 究 方 向 为 图像 处 理 、 目标 识 别 与 跟 踪 张 1 7 一) 女 辽 副 博 研 小
现 代计 算 机
2 10 01 .1
了一 定 的改 进 , 来 第 四 章 伪 指令 操 作 部分 提 前 讲 述 , 原
是 学 好 后 读 课 程 的关 键 .是 其 他 任 何 高 级 语 言 都 不 能 替 代 的 。 编 是 一 种 面 向机 器 的低 级 语 言 。 依 赖 乇 硬 汇 它 件 。 通 过 巧 妙 的程 序 设 计 充 分 发 挥 硬 件 的潜 力 。 编 能 汇 语 言 程 序 产 生 的 代 码 运 行 效 率 高 因 此 , 目前 为 止 . 到
课 程 的最 新 发 展 以 及 其 他 硬 件 条 件 下 的 汇 编 的 不 同之 处 介 绍 给 学 生