2.简化的段伪指令 简化的段定义语句书写简短,语句CODE、DATA 和 STACK分别表示代码数据段和堆栈段的开始,一个 段的开始自动结束前面一个段。采用简化段指令之前必 须有存储模型语句 MODEL
2. 简化的段伪指令 简化的段定义语句书写简短,语句.CODE、.DATA 和.STACK分别表示代码数据段和堆栈段的开始,一个 段的开始自动结束前面一个段。采用简化段指令之前必 须有存储模型语句.MODEL
简化段伪指令 功能 注释 段名为可选项,如不给出段名,则采用 CODE[段名] 创建一个代码段默认段名。对于多个代码段的模型,则 应为每个代码段指定段名。 DATA 创建一个数据段 段名是:DATA DATA? 创建无初值变量的数据 段 段名是:BSS FARDATA段名/建立有初值的远调用数可指定段名,如不指定,则将以 据段 FAR DATA命名。 FARDATA?[段建立无初值的远调用数可指定段名,如不指定,则将以 名] 据段 FAR BSS命名。 匚 CONST建立只读的常量数据段 段名是: CONST sTK庆大小创建A维段并指定段名是:m如不指定堆钱段大
简化段伪指令 功 能 注释 .CODE [段名] 创建一个代码段 段名为可选项,如不给出段名,则采用 默认段名。对于多个代码段的模型,则 应为每个代码段指定段名。 .DATA 创建一个数据段 段名是:_DATA .DATA? 创建无初值变量的数据 段 段名是:_BSS .FARDATA [段名] 建立有初值的远调用数 据段 可指定段名,如不指定,则将以 FAR_DATA命名。 .FARDATA? [段 名] 建立无初值的远调用数 据段 可指定段名,如不指定,则将以 FAR_BSS命名。 .CONST 建立只读的常量数据段 段名是:CONST .STACK [大小] 创建一个堆栈段并指定 堆栈段大小 段名是:stack。如不指定堆栈段大 小,则缺省值为1KB
3.与简化段定义有关的预定义符号 汇编程序给出了与简化段定义有关的一组预定义符号,它们可在程 序中出现,并由汇编程序识别使用。有关的预定义符号如下: (1) @code由CODE伪指令定义的段名或段组名。 (2) @data由DATA伪指令定义的段名,或 由DATA、DATA?、 CONST和 STACK所定义的段组名。 (3) @stack堆栈段的段名或段组名。 在完整的段定义情况下,在程序的一开始,需要用段名装入数据 段寄存器,例 mov ax, data seg mov asax 若用简化段定义,则数据段只用data来定义,而并未给出段 名,此时可用 mov ax, @data mov ds.ax 这里预定义符号 adata就给出了数据段的段名
3.与简化段定义有关的预定义符号 汇编程序给出了与简化段定义有关的一组预定义符号,它们可在程 序中出现,并由汇编程序识别使用。有关的预定义符号如下: (1)@code 由.CODE 伪指令定义的段名或段组名。 (2)@data 由.DATA 伪指令定义的段名,或 由 .DATA 、.DATA?、.CONST和 .STACK所定义的段组名。 (3)@stack 堆栈段的段名或段组名。 在完整的段定义情况下,在程序的一开始,需要用段名装入数据 段寄存器,例 mov ax,data_seg1 mov ds,ax 若用简化段定义,则数据段只用.data来定义,而并未给出段 名,此时可用 mov ax,@data mov ds,ax 这里预定义符号@data就给出了数据段的段名
下述例子可用5X或6X版汇编程序汇编) 参考答案1 参考答案2 mode sma mode sma data code num dw mov ax,@data code mov ds. ax mov ax,( @data XOr ax. aX mov ds. ax mov CX. 100 mov 0 again: add ax,cX mov CX.100 loop again agal in: add ax,num mov ax 4c00h Inc num 21h loop again end mov ax, 4c00h Int 21h 思考题:显示下面数组中的数据 end ARRAY DB1,3,7,8,5,4,6,8 返回
返回 参考答案2: .model small .code mov ax, @data mov ds, ax xor ax, ax mov cx, 100 again: add ax, cx loop again mov ax, 4c00h int 21h end 参考答案1: .model small .data num dw 1 .code mov ax, @data mov ds, ax mov ax, 0 mov cx, 100 again: add ax, num inc num loop again mov ax, 4c00h int 21h end ( 下述例子可用5.X 或6.X 版汇编程序汇编) 思考题:显示下面数组中的数据: ARRAY DB 1,3,7,8,5,4,6,8
第六章循环与分支程序设讣 循环程序设计方法 例试编制一个程序把BX寄存器内的二进制 思路: 数用十六进制数的形式在屏幕上显示出来。四位二进制对应一位十六 code seg segment 进制。 main proc far 循环4次 assume CS: code seg 每次循环4位 start 高位先显示 ro moy bx. 8222h 判断结果和10比较 mov ch,4;四位循环一次,共进行 4次循环即可以 rotate movc1,4;循环高4位到低生位 ro1lbx,cl;对BX进行循环操作 mov al, bl
第六章第一章循环与分支程序设计 基础知识 循环程序设计方法 例 试编制一个程序把BX寄存器内的二进制 数用十六进制数的形式在屏幕上显示出来。 code_seg segment main proc far assume cs:code_seg start: mov bx , 8222h mov ch , 4 ;四位循环一次,共进行 4次循环即可以 rotate: mov cl , 4 ;循环高4位到低4位 rol bx , cl;对BX进行循环操作 mov al , bl; 思路: 四位二进制对应一位十六 进制。 循环4次 每次循环4位 高位先显示:rol 判断结果和10比较