(8)3 13。分别汇编成为: MOV AX,0AH MOV BL,0AH MOV CL,1
14。(1)(AX)=1 (2)(AX)=2 (3)(CX)=14H (4)(DX)=32H (5)(CX)=1]
15。(1)操作符错误 改为: DATA_SEG SEGMENT (2)缺少段名 在前面加个段名
(3)引用应该从;开始 把那个“/”改成“;” (4)结构混乱 改为: MAIN_PROC PROC FAR 。。。。 MAIN_PROC ENDP END
16。程序框架如下:
DATA_SEG SEGMENT ;定義數據段
ORG 0E000H ;讓下一字節地址為0E000H
FIRST_TYPE EQU THIS WORD ;建立一個與下一存儲單元有相同段地址和偏移地址的操作數
DATA_GROUP DB 100 DUP(?) ;給DATA_GROUP 分配100個字節的空間
DATA_SEG ENDS ;數據段結束
STACK_SEG SEGMENT ;定義堆棧段 ALIGN 16 ;讓下一字節從小段首地址開始 STACK DB 100 DUP (?) ;為堆棧分配空間
STACK_SEG ENDS ; CODE_SEG SEGMENT
ASSUME CS:CODE_SEG ,DS:DATA_SEG ,SS:STACK_SEG
ORG 1000H ;讓下條指令的第一個字節從1000H開始 START : MOV AX,DATA_SEG
MOV DS,AX MOV AX,STACK_SEG
MOV SS,AX ....... CODE_SEG ENDS
END START ;結束~ 17。程序如下:
D_SEG SEGMENT ;数据段定义
AUGEND DD 99251 D_SEG ENDS
E_SEG SEGMENT ;附加段定义 ADDEND DD -15926 E_SEG ENDS
C_SEG SEGMENT ;代码段定义
ASSUME CS:C_SEG , START: MOV AX,D_SEG
DS:D_SEG,ES:E_SEG 第五章答案
5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来 .model small .stack 100H .code main proc far Start: push dx mov ax,0 push ax mov ah,01H int 21H cmp al,61H jl lop1 cmp al,7BH jge lop1 sub al,20H mov dl,al lop1:mov ah,2 int 21H ret End start
5.2 编写一个程序,从键盘接受一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符. .model small .386 .code MAIN PROC FAR start: push ds sub ax,ax push ax input: mov ah,7H
int 21H cmpe: cmp al,20H JE exit cmp al,61H JL input cmp al,7AH JG input print: sub al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int 21H add al,01H mov dl,al mov ah,02H int 21H ;输出换行回车 mov dl,0AH mov ah,02H int 21H jmp input exit : ret MAIN ENDP END start
5.3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL、DL中。 .model small .data x DB 4 dup(?) .stack 100H